csapp3e 第七章 链接

链接

       链接步骤:符号解析,同节合并,确定地址,修改引用。

7.1编译器驱动程序

7.2静态链接

       链接器完成连两个主要任务,1. 符号(函数,全局变量,静态变量)解析,2. 重定位。

       符号解析:编译器将定义的符号存放在一个符号表(symbol table)中,将每个符号的引用都与一个确定的符号定义建议关联。

       重定位:将多个代码段和数据段合并为一个单独的代码段和数据段,计算每个定义的符号在虚拟地址空间的绝对地址,将执行文件中的符号引用处的地址修改为重定位后地址信息。

7.3目标文件

7.4可重定位目标文件

       介绍了该文件格式。

7.5符号和符号表

       1. 全局符号:本模块定义,其他模块引用(非static函数,非static全局变量)。

       2. 外部符号:其他模块定义,本模块引用(其他模块定义的非static函数,非static全局变量)。

       3. 局部符号:定义在本模块,本模块到处可以使用的独有符号(static函数,static全局变量)。

       有趣的是,使用C静态属性定义的本地过程变量不会在堆栈上进行管理。 相反,编译器为这变量在.data或.bss分配每个定义的空间,并在符号表中使用唯一名称创建本地链接器符号。【COMMON 未初

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值