[资料分享] TMS320C55x汇编语言知识--链接器对程序的重新定位

Jacktang   2018-7-12 20:57 楼主
汇编器对每个段汇编时都是从0地址开始,而所有需要重新定位的符号(标号)在段内都是相对于0地址的。事实上,所有段都不可能从存储器中0地址单元开始,因此链接器必须对各个段进行重新定位。


    1.地址重定位
    重新定位的方法:
     将各个段配置到存储器中,使每个段都有一个合适的起始地址;
     将符号变量调整到相对于新的段地址的位置;
     将引用调整到重新定位后的符号,这些符号
    反映了调整后的新符号值。
    汇编器在需要引用重新定位的符号处都留了一个重定位入口。链接器在对符号重新定位时,利用这些入口修正对符号的引用值。
    2.运行时间重定位
    在实际运行中,有时需要将代码装入存储器的一个地方,而在另一个地方运行。
    如:一些关键的执行代码必须装在系统的ROM中,但运行时希望在较快的RAM中进行。
    利用SECTIONS伪指令选项可让链接器对其定位2次,其方法:
    ① 使用装入关键字设置装入地址;
    ② 使用运行关键字设置它的运行地址。
    装入地址确定段的原始数据或代码装入的位置,而任何对段的使用(例如其中的标号),则参考它的运行地址。在应用中必须将该段从装入地址复制到运行地址。
    如果只为段提供了一次定位(装入或运行),则该段将只定位一次,并且装入和运行地址相同。如果提供了2个地址,则段将被自动定位。

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复