首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >什么是__i686.get_pc_thunk.bx?为什么我们需要这个电话?

什么是__i686.get_pc_thunk.bx?为什么我们需要这个电话?
EN

Stack Overflow用户
提问于 2011-07-13 21:40:22
回答 1查看 27K关注 0票数 46

当我反汇编我的小函数时,我碰巧看到了这个调用

代码语言:javascript
复制
call   0xf60d2f47 <__i686.get_pc_thunk.bx>.

我不知道为什么在我的程序中需要这个调用。任何解释都会有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-13 22:04:35

此调用用于x86上与位置无关的代码中。它将代码的位置加载到%ebx寄存器中,该寄存器允许访问全局对象(与代码具有固定偏移量)作为该寄存器的偏移量。

与位置无关的代码是可以在不同地址加载和执行的代码,无需修改。这对于链接到共享库的代码很重要,因为这些库可以在不同的进程中映射到不同的地址。

请注意,在x86-64上不需要等效的调用,因为该体系结构具有IP相对寻址模式(即,它可以直接寻址内存位置作为当前指令位置的偏移量)。

票数 58
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6679846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档