举例来说:LDMFD SP!,{R1-R7,LR} //紧跟上例,SP=0x48000040 根据编号小的寄存器对应低地址的原则,0x48000040地址处的值出栈给R1寄存器,0x48000044地址处的值出栈赋给R2寄存器,依次类推。正好与STMFD一一对应。 SP后面的!表示要更新SP的值。SP=SP+(number of registers*4)。
sp = sp - 4,再压r11,sp = r11...sp = sp - 4,最后压r0,sp = r0。 如果想要将r0-r12和lr弹出,可以用ldmia指令: 指令:ldmia sp!,{r0-r12,lr} 举例二: STMIA, 比如当前r0指向的内存地址是 0x1000,STMIA R0!,{R1-R7} 就是 首先把r1存入 0x1000,然后r2存入0x1004,然后r3存入0x1008,如果是32...