根据文档,LDRD 指令的工作原理如下
LDRD R8, R9, [R3, #0x20]; load r8 from a word 32 bytes above the address in R3, and load r9 from a word 36 bytes above the address in R3
我理解第一部分,R8 从 R3 上方 32 个字节(0x20)的字加载。它的第二部分我不明白。为什么是 36 字节而不是 32 字节?
根据文档,LDRD 指令的工作原理如下
LDRD R8, R9, [R3, #0x20]; load r8 from a word 32 bytes above the address in R3, and load r9 from a word 36 bytes above the address in R3
我理解第一部分,R8 从 R3 上方 32 个字节(0x20)的字加载。它的第二部分我不明白。为什么是 36 字节而不是 32 字节?
请参阅实际使用说明书。
从 A4-50 页:
LDRD(加载寄存器双字)从内存的两个连续字加载一对 ARM 寄存器。这对寄存器被限制为偶数寄存器和紧随其后的奇数寄存器(例如,R10 和 R11)。
tl/dr: 36 是 32 + 4(它加载到概念词)基本上它说在偏移 0x20 到 r3 处,为 r8 和 r9 得到两个词。