如何在c /汇编中使用相对位置?
据说位置独立码只使用相对位置而不是绝对位置,这又如何在c和汇编中实现?
我们以
char test[] = "string";
为例,如何通过相对地址来引用它?
没有找到相关结果
已邀请:
3 个回复
辅奈
粱委教
然后使用
作为基指针,其位移等于要访问的数据与
指令的地址之间的距离。 实际上它通常更复杂,通常可以使用微小的thunk函数来加载PIC寄存器,如下所示:
选择偏移量时,当thunk返回时,
包含指向程序/库中指定特殊点的指针(通常是全局偏移表的起点),然后所有后续的
相对访问可以简单地使用所需数据与指定特殊点之间的距离作为偏移量。 在其他拱门上,原则上一切都相似,但可能有更简单的方法来加载程序计数器。许多只是让你在相对寻址模式下使用
或
寄存器作为普通寄存器。
杭难插
很大程度上取决于您的编译器和CPU架构,如前面的答案所述。找到的一种方法是使用适当的标志(-PIC -S for gcc)进行编译,然后查看你得到的汇编语言。