- R0-R7:這8個暫存器是所有模式都共用的。
- R8-R12:則會依照模式去切換Bank Register。
- R13通常做為堆疊指標Stack Pointer,保存目前處理器模式的堆疊的堆疊頂端。(by convention)
- R14為Link Register,保存副程式的返回位址,比如在BL指令時,會將PC的值複製到R14,作為返回(Return)的位址。(hardwired)
- R15為PC(Program Counter),內容存放處理器要存取的下一道指令位址。(hardwired)
- R13(Stack Pointer:SP):用途大約可分三大類
- 中斷產生時,不想改變目前模式下的暫存器,把所有暫存器資料儲存起來
- 當函式被呼叫時,一樣也不想改變呼叫者的暫存器,也會把所有暫存器資料儲存起來
- C語言的區域變數(Local Variable)會使用
- 有一個Current Program Status Register (CPSR)
- 在所有處理器模式下都可以存取當前的程式狀態暫存器CPSR。
- CPSR包含條件碼旗標,中斷禁止位元,當前處理器模式以及其他狀態和控制資訊。
- 有五個Saved Program Status Registers (SPSRs)
- 每種例外模式都有一個程式狀態保存暫存器SPSR。
- SPSR用於保留CPSR的狀態。
- 條件碼旗標(Condition Code Flag):
N,Z,C,V 大多數指令可以測試這些條件碼旗標以決定程式指令如何執行
控制位元(Control Bit):
最低8位元 I,F,T和M位元用做控制位元。當例外出現時改變控制位元。當處理器在特權模式下也可以由軟體改變。
中斷禁止位元(Interrupt disable bit):I設成1則禁止IRQ中斷。F設成1則禁止FIQ中斷。
T位元(State Bit或Thumb Bit):
T=0 指示ARM執行。T=1指示Thumb執行。在這些架構系統中,可自由地使用能在ARM和Thumb狀態之間切換的指令。
模式位元(Mode Bit):
M0, M1, M2, M3和M4 (M[4:0]) 是模式位元.這些位元決定處理器的工作模式。
沒有留言:
張貼留言