代码示例:
int main(int argc, char *argv[]) {
return 0;
}
使用命令编译:{{1}}
这是gcc -m32 -g -o main main.c
的汇编:
objdump
为什么gcc会在那里添加所有080483db <main>:
int main(int argc, char *argv[]) {
80483db: 55 push ebp
80483dc: 89 e5 mov ebp,esp
return 0;
80483de: b8 00 00 00 00 mov eax,0x0
}
80483e3: 5d pop ebp
80483e4: c3 ret
80483e5: 66 90 xchg ax,ax
80483e7: 66 90 xchg ax,ax
80483e9: 66 90 xchg ax,ax
80483eb: 66 90 xchg ax,ax
80483ed: 66 90 xchg ax,ax
80483ef: 90 nop
和最终xchg ax, ax
?我注意到,如果不添加nop
,则会删除那些-m32
指令,但仍会出现nop:
xchg ax, ax