堆疊指針暫存器

堆疊指針暫存器在堆疊操作中使用,PUSH和POP指令是從SP暫存器得到現行堆疊段的段內偏移量,所以稱SP暫存器為堆疊指針,SP始終指向棧頂。

堆疊是計算機中廣泛套用的技術,基於堆疊具有的數據進出LIFO特性,常套用於保存中斷斷點、保存子程式調用返回點、保存CPU現場數據等,也用於程式間傳遞參數。

ARM處理器中通常將暫存器R13作為堆疊指針(SP)。ARM處理器針對不同的模式,共有 6 個堆疊指針(SP),其中用戶模式和系統模式共用一個SP,每種異常模式都有各自專用的R13暫存器(SP)。它們通常指向各模式所對應的專用堆疊,也就是ARM處理器允許用戶程式有六個不同的堆疊空間。這些堆疊指針分別為R13、R13_svc、R13_abt、R13_und、R13_irq、R13_fiq。
為了更準確地描述堆疊,根據“壓棧”操作時堆疊指針的增減方向,將堆疊區分為‘遞增堆疊’(SP 向大數值方向變化)和‘遞減堆疊’(SP 向小數值方向變化);又根據SP 指針指向的存儲單元是否含有堆疊數據,又將堆疊區分為‘滿堆疊’(SP 指向單元含有堆疊有效數據)和‘空堆疊’(SP 指向單元不含有堆疊有效數據)。
這樣兩兩組合共有四種堆疊方式——滿遞增、空遞增、滿遞減和空遞減。
ARM處理器的堆疊操作具有非常大的靈活性,對這四種類型的堆疊都支持。
ARM處理器中的R13被用作SP。當不使用堆疊時,R13 也可以用做通用數據暫存器。

相關詞條

熱門詞條

聯絡我們