计算机系统基础答案第四章,计算机系统基础 -- 第四章 (程序的链接)

计算机系统基础 -- 第四章 (程序的链接)

什么是程序的链接?

将 gcc 生成的若干个. 0 文件为后缀的, vc 输出为. obj 为后缀的可重定位目标文件组合起来, 生成一个可执行目标文件

程序链接的好处:

1, 模块化 (可分成不同模块全部编译成. o 文件后链接即可运行. 而不仅仅是只有一个. c 文件, 对于大工程来说清晰划分)

2, 效率高 (由于可以使多个文件同时编写, 多个模块同时修改, 因此这样提升了效率)

在链接先进行编译和汇编, 在第三章聊过

可执行文件与. o 文件的汇编差别在哪?

由于可执行文件是将可重定位二进制文件重新组合, 因此其自身的虚拟地址转化为了逻辑地址, 如下// test.c

intmain(inti,intj){

intx=i+j;

returnx;

}

// 使用 objdump -d test.o 反汇编出来的. o 文件

// test.o

Disassemblyofsection.text:

0000000000000000

:

0:55push%rbp

1:48 89 e5 mov %rsp,%rbp

4:89 7d ec mov %edi,-0x14(%rbp)

7:89 75 e8 mov %esi,-0x18(%rbp)

a:8b 55 ec mov -0x14(%rbp),%edx

d:8b 45 e8 mov -0x18(%rbp),%eax

10:01 d0 add %edx,%eax

12:89 45 fc mov %eax,-0x4(%rbp)

15:8b 45 fc mov -0x4(%rbp),%eax18:5dpop%rbp

你可能感兴趣的:(计算机系统基础答案第四章)