首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ldr和ldr.w之间的区别

ldr和ldr.w之间的区别
EN

Stack Overflow用户
提问于 2012-03-21 15:50:27
回答 3查看 12.4K关注 0票数 5

我最近不得不调试一个MachO二进制文件,我遇到了以下指令:

ldr.w r4, [r1, r0, lsl #2]

据我所知,ldr r4, [r1, r0, lsl #2]将r0向左移动了两次,将其添加到r1中,并取消对结果的引用。

ldr.w有什么不同?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-21 15:58:35

.W是一个可选的指令宽度说明符。它不会影响指令本身的行为,它只是确保生成32位指令。有关详细信息,请参阅infocenter.arm.com

在Thumb-2中,可以使用.W宽度说明符强制在Thumb-2代码中生成32位指令。LDR.W始终生成32位指令,即使可以使用16位LDR到达目标。对于前向引用,不带.W的LDR始终在Thumb代码中生成16位指令,即使这会导致使用32位Thumb-2 LDR指令可以到达的目标失败。

票数 8
EN

Stack Overflow用户

发布于 2012-03-21 15:58:41

ARM Assembler Manual

您可以使用.W宽度说明符强制LDR在Thumb-2代码中生成32位指令。

始终生成32位指令,即使使用16位LDR可以到达目标。

票数 1
EN

Stack Overflow用户

发布于 2012-03-22 11:44:32

有手臂和拇指的说明。一些处理器具有对thumb指令的thumb2扩展,其好的、坏的或不好的类似于ARM指令。有时你可能想要一个,然后又得到了另一个。在thumb中,你当然可以添加.w来暗示更宽的32位thumb2指令,而不是16位的thumb指令。有时,由于与ARM和thumb2相比,thumb2指令受到很大的限制,所以语法很容易让人明白您想要哪一个。

还要注意,thumb2有不同的风格,在ARMv6和ARMv7之间有很大的不同。我想我数过了30-40条ARMv6 thumb2指令和100多条ARMv7 thumb2指令。(如果您曾经使用cortex m3并且已经习惯了它,现在尝试使用cortex m0,您将看到这一点)。

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

https://stackoverflow.com/questions/9800526

复制
相关文章

相似问题

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