1)
ARM處理器有37+3個32位寄存器:其中有32個通用寄存器,只有一個PC指針寄存器,一般習慣用R15來指向正在取指的指令,而不是正在執行的指令。(這裏涉及到arm處理器的流水線操作流程,下面在介紹),七個狀態寄存器:但是隻有一個CPSR寄存器(用來表示當前程序狀態寄存器),6個SPSR寄存器(用來保存備份當前程序狀態的異常數據)。
處理器在工作時有8種不同的工作模式,對應的每一種處理器模式都有一組相應的寄存器組:
這裏USER/SYS工作模式共用一個寄存器組,但是USER模式沒有特權,而且沒有對應的SPSR寄存器
當前處理的模式決定了哪組寄存器可以以操作,任何模式都可以存取的寄存器。
(1)相應的R0~R12
(2)相應的R13(SP,棧頂指向)和R14(LR,鏈接地址寄存器,用來記錄程序下次將要執行指令的地址)以及PC指針寄存器(一般習慣用R15來指向正在取指的指令,而不是正在執行的指令)
(3)相應的CPSR寄存器(能夠表示當前程序的狀態反應處理器當前的工作模式從而設置它的某些位來改變處理器的模式和異常模式的設置以及標準位的反映和設置)
(4)在特權模式下還可以存取相應的異常模式時CPSR寄存器
arm處理器 的 8種工作模式:
ARM處理器按照一系列的步驟來執行每一條指令:簡單的一般使用3級流水線
(1)取指令:從寄存器加載一條指令
(2)譯碼:識別被執行的指令,併爲下一個週期準備數據電路的控制信號,在這一級別,指令佔有譯碼邏輯,不佔據數據通路
(3)執行:處理指令並將結果寫回寄存器
CPSR寄存器位的分配:
其中N(負數標誌)Z(零標誌)C(進位標誌)V(溢出標誌)/ / 其中0~4位標誌模式爲I(IRQ使能位)F(FIQ使能位)T(狀態位)
N:當N = 1 時表示負數,N = 0表示整數或者零
控制位:
1)中斷禁止位:當I或F = 1 時 ,表示中斷進制
2)狀態控制位:當T = 0時表示處於ARM狀態
3)模式控制位:
MODE(以下爲二進制) |
||
10000 |
用戶模式 |
PC,CPSR,R0~R14 |
10001 |
FIQ |
PC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R7~R0 |
10010 |
IRQ |
PC,CPSR,SPSR_irq,R14_irq~R13_irq,R12~R0 |
10011 |
管理模式(svc) |
PC,CPSR,SPSR_svc,R14_svc~R13_svc,R12~R0 |
10111 |
終止模式 |
PC,CPSR,SPSR_abt,R14_abt~R13_abt,R12~R0 |
11011 |
未定義 |
PC,CPSR,SPSR_und,R14_und~R13_und,R2~R0 |
11111 |
系統模式(sys) |
PC,CPSR,R14 ~R0 |