История изменений
Исправление 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.