使用$gp
寄存器存储值是否存在危险?我想我的问题是$gp
的真正功能是什么,它是否以某种方式在幕后调用,以便如果我使用它,事情可能会非常错误?
答案 0 :(得分:6)
好吧,$ gp寄存器指向全局区域。 Convention表示在编写函数时应该存储它(参见.cprestore)。
如果你需要使用它(老实说,不知道为什么),请记住这些事情:
1)始终将其存储在已保存中 注册堆栈区域。
2)始终将该值加载到$ gp中 当摧毁堆栈时。
3)不要使用它。 (即不要访问 全球范围)
另外,我不确定,但你可以忘记PIC代码。