我无法确定链接器将修改哪些指令,哪些指令不会。我的教科书说那些将被修改的是那些其值被定义为程序的起始地址+ - 常量的教科书。它给出了以下2个mips的例子:
然后说那些不需要修改的是表达式独立于程序起始地址的那些
谢谢,
编
答案 0 :(得分:0)
链接器...将对象blob链接到最终的二进制文件中。对象可能与位置无关。硬编码地址很好,但基于标签要么在编译/汇编时解析为位置无关,要么链接器在链接时解析它们。还有其他标签,如外部函数和全局变量,在汇编/编译时也无法解析,必须由链接器解析。
不仅仅是修改过的指令。根据指令集和指令,可以添加绝对地址,然后在.text中将其解析为.rodata,因此不仅可以插入指令,还可以插入地址或其他解决方案。根据工具链,链接器可能会添加指令和数据。
您的文本/教师可能会说中间向量表,因为可能已知使用外部标签,因此这些标签(地址)必须由链接器解析。但这只是大局的一个简单例子。