大家好,今天小编关注到一个比较有意思的话题,就是关于stm32中addr的问题,于是小编就整理了1个相关介绍stm32中addr的解答,让我们一起看看吧。
ARM入栈的规则?
ARM寄存器入栈规则
主程序运行:
r0-r12通用寄存器,
r13(msp主/psp),
r14(lr),
r15(pc指向下一个待取指令地址[pc+4])
产生中断/异常:
push操作
growth 1 向下增长
addrhigh:0x2100
xpsr. xpsr. xpsr. xpsr. xpsr. xpsr. xpsr. xpsr …
pc. pc. pc. pc. pc. pc. pc
lr. lr. lr. lr. lr. lr
r12. r12. r12. r12. r12
r3. r3. r3. r3
r2. r2. r2
r1. r1
r0
r11————r4
addrlow:0x2000
stm32栈属于满递减栈
满代表指向被最新被push的栈元素而不是空
递减代表栈内元素地址更新从高到低递减
push之前栈空,msp栈指针指向栈地址+1(即空的地方,当有一个元素入栈之后,msp立刻指向这个元素)。
栈顶指针stk从xpsr变为自动push的r0,最终变为手动push的r4。
到此,以上就是小编对于stm32中addr的问题就介绍到这了,希望介绍关于stm32中addr的1点解答对大家有用。