自己动手构造编译系统:编译、汇编与链接2.5 链接程序的设计

简介:

2.5  链接程序的设计

  

       本书欲设计一个简洁的静态链接器,以满足上述汇编器产生的目标文件的链接需求。它的工作内容是把多个可重定位目标文件正确地合并为可执行文件,但链接器不是对文件进行简单的物理合并。除了合并同类的段外,链接器需要为段分配合适的地址空间,还需要分析目标文件符号定义的完整性,同时对符号的地址信息进行解析,最后还有链接器最关键的工作——重定位。本书设计的链接器结构如图2-17所示。

 

图2-17  链接器结构

  段的地址空间分配除了为加载器提供相应的信息外,还可为段内符号地址的计算提供依据。符号解析除了验证符号引用和定义的正确性之外,还需要计算出每个符号表内符号的虚拟地址。重定位可以让每个引用符号的数据或者代码具有正确的内容,以保证程序的正确性,下面就按照这三个方面分别介绍链接器的工作。

目录
打赏
0
0
0
0
1408
分享
相关文章
为什么C/C++编译腰要先完成汇编
C/C++ 编译过程中先生成汇编语言是历史、技术和实践的共同选择。历史上,汇编语言作为成熟的中间表示方式,简化了工具链;技术上,分阶段编译更高效,汇编便于调试和移植;实践中,保留汇编阶段降低了复杂度,增强了可移植性和优化能力。即使在现代编译器中,汇编仍作为重要桥梁,帮助开发者更好地理解和优化代码。
67 25
为什么C/C++编译腰要先完成汇编
加快软盘操作速度的汇编程序源代码
加快软盘操作速度的汇编程序源代码
|
8月前
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
51单片机用汇编语言实现独立按键检测,每个按键有不同功能,包含按键消抖程序
222 3
汇编高手秘籍:解锁性能优化新境界,用汇编语言让你的程序飞起来!
【8月更文挑战第31天】汇编语言作为编程基石,其高效性能备受推崇。尽管现代软件开发更偏爱高级语言,但在性能要求极高的场景下,汇编优化仍不可或缺。本文通过示例代码介绍四种优化技巧:循环展开、寄存器分配、指令重排及SIMD指令使用,显著提升执行效率。同时强调分析性能瓶颈、测试优化效果及保持代码可读性的重要性,助力开发者在关键代码路径上实现性能突破。
314 0
8086 汇编笔记(五):包含多个段的程序
8086 汇编笔记(五):包含多个段的程序
|
11月前
|
C51汇编程序
C51汇编程序
116 5
程序技术好文:部分ARM汇编指令解读
程序技术好文:部分ARM汇编指令解读
C语言编译过程——预处理、编译汇编和链接详解
C语言编译过程——预处理、编译汇编和链接详解