小编Joe*_*Joe的帖子

链接器在链接时是否生成绝对虚拟地址

假设一个简单的 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)

macos assembly linker executable virtual-memory

5
推荐指数
1
解决办法
1316
查看次数

标签 统计

assembly ×1

executable ×1

linker ×1

macos ×1

virtual-memory ×1