ldr和ldr.w之间的区别

5 assembly arm thumb

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

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

我知道ldr r4, [r1, r0, lsl #2]将r0向左移动两次,将其添加到r1并取消引用结果.

ldr.w有何不同?

Pau*_*l R 7

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

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