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

本文介绍了一个简洁静态链接器的设计思路,包括段地址空间分配、符号解析及重定位等关键步骤,确保程序链接后的正确性。

2.5  链接程序的设计

  

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

 

图2-17  链接器结构

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值