假设一个简单的 hello world in C,编译gcc -c为目标文件并反汇编为objdump如下所示:
_main:
0: 55 pushq %rbp
1: 48 89 e5 movq %rsp, %rbp
4: c7 45 fc 00 00 00 00 movl $0, -4(%rbp)
b: c7 45 f8 05 00 00 00 movl $5, -8(%rbp)
12: 8b 05 00 00 00 00 movl (%rip), %eax
Run Code Online (Sandbox Code Playgroud)
如您所见,内存地址是0, 1, 4, ..等等。它们不是实际地址。
链接目标文件并反汇编它看起来像这样:
_main:
100000f90: 55 pushq %rbp
100000f91: 48 89 e5 movq %rsp, %rbp
100000f94: c7 45 fc 00 00 …Run Code Online (Sandbox Code Playgroud)