主堆疊指針總是指向棧頂位置。一般堆疊的棧底不能動,所以數據入棧前要先修改堆疊指針,使它指向新的空餘空間然後再把數據存進去,出棧的時候相反。按"先進後出"的原則存取數據。
基本介紹
- 中文名:主堆疊指針
- 外文名:Main Stack pointer
- 套用:ARM處理器開發
- Cortex-M3核心中有兩個堆疊指針(MSP & PSP),但任何時刻只能使用到其中一個。
- 復位後處於執行緒模式特權級,默認使用MSP。
- 通過SP訪問到的是正在使用的那個指針,可以通過MSR/MRS指令訪問指定的堆疊指針。
- 通過設定CONTROL暫存器的bit[1]選擇使用哪個堆疊指針。CONTROL[1]=0選擇主堆疊指針;CONTROL[1]=1選擇進程堆疊指針。
- Handler模式下,只允許使用主堆疊指針MSP。
MRS R0, MSP MSR MSP, R0 MRS R0, PSP MSR PSP, R0