0
我試圖理解這個examble約LDM和STM指令,但 我有最終結果的一個問題,這裏是例子:ARM STM/LDM指令的發佈
PRE
r0 = 0x00009000
r1 = 0x00000009
r2 = 0x00000008
r3 = 0x00000007
STMIB r0!, {r1 - r3}
MOV r1, #1
MOV r2, #2
MOV r3, #3
PRE(2)
r0 = 0x0000900C
r1 = 0x00000001
r2 = 0x00000002
r3 = 0x00000003
LDMDA r0!, {r1 - r3}
POST
r0 = 0x00009000
r1 = 0x00000009
r2 = 0x00000008
r3 = 0x00000007
我必須這樣做我獲得:
r0 = 0x00009000
r1 = 0x00000007
r2 = 0x00000008
r3 = 0x00000009
我不知道我錯了,我能想到的唯一的可能是關於STM指令R3開始,而不是在R1
寄存器總是按照從低地址到高位的數字順序傳輸。 – Jester
@Jester謝謝!所以'{r1 - r3}'沒有指定任何順序?只需按照地址的數字順序? – Hector
是的。還要注意,如果將堆棧操作推入並彈出(只要使用匹配模式),就會更容易。 'stmib/ldmda'實現了一個「完全遞增」的堆棧,所以它們是'stmfa/ldmfa'的別名。另請參見[使用LDM和STM的堆棧實現](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0801e/dom1359731152499.html) – Jester