Я пытался лучше понять, что происходит под капотом, используя компилятор для создания программ сборки различных программ на разных уровнях оптимизации. Есть кое-что, что беспокоило меня какое-то время.gcc дает странный синтаксис Intel
Когда я компилирую t.c
следующим образом,
gcc -S t.c
я получаю сборку в AT & T синтаксис следующим образом.
function:
pushl %ebp
movl %esp, %ebp
movl 12(%ebp), %eax
addl 8(%ebp), %eax
popl %ebp
ret
.size function, .-function
Когда я компилирую с помощью MASM аргумент следующим образом: -
gcc -S t.c -masm=intel
я получаю следующий результат.
function:
push %ebp
mov %ebp, %esp
mov %eax, DWORD PTR [%ebp+12]
add %eax, DWORD PTR [%ebp+8]
pop %ebp
ret
.size function, .-function
Существует изменения в синтаксисе, но есть еще «%» s до обозначений регистров (вот почему я не предпочитаю AT & T синтаксис в первую очередь).
Может кто-то пролить свет на то, почему это происходит? Как решить эту проблему?