Транслируем код c++ в assembler

C++ & assemblerЧаще всего мы используем gcc для компиляции кода c++  в двоичный код. Иногда, в целях отладки, бывает необходимо увидеть промежуточный код на ассемблере, который получается из первоначального исходника.

Компилятор gcc можно вызвать с параметром -S для генерации файла с промежуточным кодом на ассемблере.

[cpp]gcc -S -c code.cpp[/cpp]

Кроме двоичного кода, на выходе мы получим файл main.s.

main.cpp

[cpp]#include <stdio.h>

int main(int argc, char *argv[])
{
return 0;
}[/cpp]

main.s

[cpp].file "main.cpp"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
movl $0, %eax
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (GNU) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)"
.section .note.GNU-stack,"",@progbits[/cpp]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *