我正在尝试调试一个与访问gp寄存器相关的段错误。
我注意到所有的函数都是这样开头的:
0x400b7c <main>: lui gp,0xa
0x400b80 <main+4>: addiu gp,gp,31444
0x400b84 <main+8>: addu gp,gp,t9正如这里解释的:https://www.cr0.org/paper/mips.elf.external.resolution.txt,t9的使用似乎与“经典的GOT/PLT机制”有关。
然而,该文档不是很有启发性,所以我的问题是:
派生适当的t9值以用于进行函数调用的过程是什么?(假设有一个运行时代码生成器/类似JIT的用例。)
更新:我找到了一些更完整的文档:https://gcc.gnu.org/ml/gcc/2008-07/txt00000.txt。
发布于 2018-05-01 09:22:24
这只是函数的地址。函数中的计算从函数自己的地址派生gp。
https://stackoverflow.com/questions/50110088
复制相似问题