LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

Современный ассемблер скорее вредит при изучении Си.

Полностью несогласен, конечно оптимизации и виртуальная машина стандарта во многом не совпадает, но во многом сильно совпадает, и наложить опыт можно довольно просто.

Потому что 90% ассемблерных операций изобразить на Си просто не получается.

Их можно легко добиться с хорошим компилятором, таким как gcc, потому что он хорошо распознает намерение и генерирует нужные команды.

Вот прямо вписать lea(rax, rcx) не выйдет, но так ли это нужно в С?

в ассемблере если есть переменная длиной 10 байтов, а за ней другая переменная ещё на 10 байтов, то при записи в первую переменную по смещению 11 будет записан первый байт второй переменной

Неправда, только если ты их расположил в памяти друг за другом, и это можно сделать и в С. Потому что в ассемблере переменная может быть и extern.

Ну вот. В процессоре это определённая операция. А в Си может случиться что угодно.

Если ассемблер не переносится 1 в 1 в С, это еще не значит что он плох.

Давай в противовес я запишу плюс изучения: Можно изучать godbolt, посмотреть во что раскрываются новоизученные выражения.

Исправление MOPKOBKA, :

Современный ассемблер скорее вредит при изучении Си.

Полностью несогласен, конечно оптимизации и виртуальная машина стандарта во многом не совпадает, но во многом сильно совпадает, и наложить опыт можно довольно просто.

Потому что 90% ассемблерных операций изобразить на Си просто не получается.

Их можно легко добиться с хорошим компилятором, таким как gcc, потому что он хорошо распознает намерение и генерирует нужные команды.

Вот прямо вписать lea(rax, rcx) не выйдет, но так ли это нужно в С?

в ассемблере если есть переменная длиной 10 байтов, а за ней другая переменная ещё на 10 байтов, то при записи в первую переменную по смещению 11 будет записан первый байт второй переменной

Неправда, только если ты их расположил в памяти друг за другом, и это можно сделать и в С.

Ну вот. В процессоре это определённая операция. А в Си может случиться что угодно.

Если ассемблер не переносится 1 в 1 в С, это еще не значит что он плох.

Давай в противовес я запишу плюс изучения: Можно изучать godbolt, посмотреть во что раскрываются новоизученные выражения.

Исходная версия MOPKOBKA, :

Современный ассемблер скорее вредит при изучении Си.

Полностью несогласен, конечно оптимизации и виртуальная машина стандарта во многом не совпадает, но во многом сильно совпадает, и наложить опыт можно довольно просто.

Потому что 90% ассемблерных операций изобразить на Си просто не получается.

Их можно легко добиться с хорошим компилятором, таким как gcc, потому что он хорошо распознает намерение и генерирует нужные команды.

Вот прямо вписать lea(rax, rcx) не выйдет, но так ли это нужно в С?

в ассемблере если есть переменная длиной 10 байтов, а за ней другая переменная ещё на 10 байтов, то при записи в первую переменную по смещению 11 будет записан первый байт второй переменной

Неправда, только если ты их расположил в памяти друг за другом, и это можно сделать и в С.

Ну вот. В процессоре это определённая операция. А в Си может случиться что угодно.

Если ассемблер не переносится 1 в 1 в С, это еще не значит что он плох. Давай в противовес я запишу плюс изучения: Можно изучать godbolt.