一个简单的c函数。
void sum ()
{
return ;
}
Command
gcc -c -m32 -o simple simpleProg.c -O0 && objdump -d simple -M intel
simple: file format elf32-i386
Disassembly of section .text:
00000000 <sum>:
0: f3 0f 1e fb endbr32
4: 55 push ebp
5: 89 e5 mov ebp,esp
7: e8 fc ff ff ff call 8 <sum+0x8> --->This
c: 05 01 00 00 00 add eax,0x1
11: 90 nop
12: 5d pop ebp
13: c3 ret
call 8
语句在这里做什么?另外void
是否需要在eax中返回为0x01
?
[您正在查看的代码之前已对其进行修复(通常在链接阶段完成)。
如果添加-r
,则会看到以下内容:
00000000 <sum>:
0: 55 push ebp
1: 89 e5 mov ebp,esp
3: e8 fc ff ff ff call 4 <sum+0x4>
4: R_386_PC32 __x86.get_pc_thunk.ax
8: 05 01 00 00 00 add eax,0x1
9: R_386_GOTPC _GLOBAL_OFFSET_TABLE_
d: 90 nop
e: 5d pop ebp
f: c3 ret
Disassembly of section .text.__x86.get_pc_thunk.ax:
00000000 <__x86.get_pc_thunk.ax>:
0: 8b 04 24 mov eax,DWORD PTR [esp]
3: c3 ret