cortex-m3 STM32 MCU支持单条PUSH/POP指令对多个寄存器执行入栈出栈操作,入栈顺序按照寄存器编号的反序进行入栈,不以用户的编码顺序进行入栈(因为操作码以mask值运算),例如:
PUSH {R0-R3}
PUSH {R1, R0, R2, R3}
PUSH {R3, R1, R2, R0}
PUSH {R3, R1-R0}四种写法的执行结果是完全一致的,指令执行后,堆栈镜像如下:
0x20000000: R0
0x20000004: R1
0x20000008: R2
0x2000000C: R3在编写fans-rt的中断入口函数时应特别加以注意。
本文深入探讨了STM32 MCU中PUSH/POP指令如何实现寄存器入栈出栈操作,并详细解释了入栈顺序与用户编码顺序无关的特点。对于编写中断入口函数的开发者而言,了解这一机制至关重要。

5383


被折叠的 条评论
为什么被折叠?



