1. 程式人生 > >fans-rt 任務排程-堆疊切換篇(3)關於cortex-m3堆疊的入棧順序說明

fans-rt 任務排程-堆疊切換篇(3)關於cortex-m3堆疊的入棧順序說明

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的中斷入口函式時應特別加以注意。