我正在尝试调试我的应用程序中遇到的崩溃。堆栈跟踪指向具有以下格式的LDR指令(感谢反汇编器):
LDR R3, [R0,#4]
我的问题与源组件有关。第二个参数中的 #4 是什么意思?我猜它是某种偏移量,但我没有找到支持 LDR 指令的文档。
它从R0 + 4个字节的地址加载R3,因此是一个字节偏移量。请参考这里有关寻址模式的说明。
.syntax unified
时,ARMv7才需要哈希符号#
。aarch64-linux-gnu-as
,您可以在不使用#
的情况下编写它:LDR x0, [x0,4]
如果在arm-linux-gnueabihf-as
中使用.syntax unified
:
.syntax unified
LDR x0, [x0,4]
更多细节请参考:ARM汇编中立即数是否需要使用#号?
它将R0中的值加4,并将其用作地址,加载一个32位的值到寄存器R3中。