免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1279 | 回复: 0
打印 上一主题 下一主题

[其他] 有关目标文件中重定位项的疑惑 [复制链接]

论坛徽章:
1
15-16赛季CBA联赛之山东
日期:2016-08-09 14:05:01
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-21 23:21 |只看该作者 |倒序浏览
每个目标文件都有两个重定位项集合,一个是文本段的,一个是数据段的(bss段被定义为全0, 因此没有什么需要重定位的。)

每个目标文件都有两个重定位项集合“,我的理解是:

例如:
         全局变量 int global;
         本地局部变量 int local;

         代码为:value = local;

"文本段的重定位项"指的是:
value在输出文件中所在的内存位置(链接后的位于文本段中指令所在的虚拟地址),该赋值指令需要被修改,以正确反映value在数据段中的内存位置,把右值放到里面。
简而言之,就是二进制指令所加载到进程地址空间的内存地址。

"数据段的重定位项"指的是:
数据段被加载到进程地址空间后,value在数据段中的内存地址。

在链接过程的输入文件中,指令中对value的赋值需要value的准确地址,而数据段在进程地址空间的内存位置确定下来以后,才能修改引用了value的所有指令。

疑惑啊,这样想至少自己觉得想通了,对不对,是不是确实反映了作者的意思,或者说链接器的处理方式,有待确认。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP