LDM/STM指令主要用於現場保護,數據復制,參數傳送等。
STMFD指令
STMFD Rn{!},{reglist}{^}
舉例說明:
STMFD SP!,{R0-R7,LR}
對於這條指令偽代碼的解釋,大體是這樣的:
SP = SP - 9×4; address = SP; for i = 0 to 7 Memory[address] = Ri; address = address + 4; Memory[address] = LR;
假設此時SP地址為: 0x40000460,由前面解釋偽代碼可得下圖(藍色填充區為地址)
LDMFD 指令
LDMFD Rn{!},{reglist}{^}
這條指令的意思是以Rn為基址(起始地址),取值寫入寄存器列表。
舉例說明:
LDMFD SP!,{R0-R7,PC}^
對於這條指令偽代碼的解釋,大體是這樣的:
address = SP; for i = 0 to 7 Ri = Memory[address ,4] address = address + 4; SP = address;
假設此時SP地址為: 0x4000043C,由前面解釋偽代碼可得下圖(藍色填充區為地址):
藍色標注的SP為執行指令前的SP地址,紅色標注的SP是執行指令後的SP地址。