Да, gcc может выдавать промежуточный вывод на ассемблере на этапе компиляции через gcc -S
.Вы можете генерировать различные выходные данные ассемблера с различными уровнями оптимизации -On
, где n=0,1,2,3
.Если вы сделаете это, вы заметите, что -O3
, в частности, производит вещи, которые в вашей голове не отображаются непосредственно в код на C, потому что gcc оптимально реализовал код.
MSVC может делать то же самоечерез cl.exe /Fafilename.asm
.Документация по msdn для этого: здесь .
Обратите внимание, что если вы хотите использовать синтаксис сравнимого ish, вы, вероятно, захотите gcc -masm=intel -S
на конце gcc.Также обратите внимание, что будут некоторые различия между выводом макросов от Microsoft и выводом GNU AS.Я не знаком с MASM, но между всеми ассемблерами есть тонкие различия (а также очевидный синтаксис AT & T и Intel).