首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >手臂皮质A7:避免记忆贴面?

手臂皮质A7:避免记忆贴面?
EN

Stack Overflow用户
提问于 2016-09-13 19:53:01
回答 1查看 301关注 0票数 0

在ARMv7上,它的拇指能力,它是正确的,我们可以避免所有的贴面使用BX指令?

既然这个指令需要32位寄存器,那么我们还好吗?

如果是的话,当我在生成的代码中看到贴面时,我应该为我的机器专门化输出,对吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 00:20:44

是的,因为BX采用32位寄存器,所以不需要使用veener,因为您可以覆盖整个寻址空间。

当然,您需要将32位值加载到寄存器中,这通常意味着常量池,所以如果您希望从寄存器中挤出每一个周期,并且您的程序不太大,那么使用相对分支会更好。正如@ notes所指出的,如果您在寄存器中还没有地址,那么在只使用BX (除非您需要支持ARMv4T互操作)的情况下,使用ARMv4T是没有意义的。

相对的,非条件的,32位的拇指分支有一个24位的寻址空间,所以你可以达到+/- 16 32(其他人见这里)。如果你在做ELF,要小心使用16位的相对拇指分支。32位分支将生成24位重定位,如果目标不能用24位进行寻址,链接器将插入一个veener。一个16位的分支会生成一个11位的重定位,小精灵换手臂指定链接器是而不是来为这些分支生成veener,所以您可能会冒出链接超时分支的风险。

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

https://stackoverflow.com/questions/39477993

复制
相关文章

相似问题

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