arm-cpsr

2種運行狀態:
ARM狀態(32位)、Thumb狀態(16位),兩種狀態之間可任意切換;
7種運行模式:
用戶模式usr
快速中斷fiq
外部中斷irq
管理svc
系統sys
數據訪問中止abt
未定義指令中止und

寄存器組織:
ARM狀態:
R0~R14 通用寄存器
         R0~R7   未分組寄存器,所有7種運行模式下指向同一物理寄存器,在中斷或異常處理等模式轉換時,需防止寄存器中數據的破壞。
         R8~R14  分組 根據不同的運行模式訪問不同的物理寄存器
R8~R12  除fiq外,其餘同usr模式
R13~R14 除usr、sys外,其餘有各自分組模式
R15 PC  程序計數器
R16     狀態寄存器
        CPSR通用
              SPSR 除usr、sys外,用於異常保護的CPSR的備份,異常時,保存CPSR值,異常退出時,將該值恢復到CPSR
Thumb狀態:
R0~R7 通用
SP對應ARM狀態R13
LR對應ARM狀態R14
PC對應ARM狀態R15
CPSR和SPSR與ARM狀態同

R13 -SP stack pointer 堆棧指針,用於取指令操作
R14 -LR Load register 用於程序調用
PC -程序計數器,總是指向當前指令的下兩條指令,即PC值爲當前指令地址值加8個字節

程序狀態寄存器:
CPSR 每一中模式下訪問同一物理寄存器
SPSR 除usr、sys外,用於異常保護的CPSR的備份,異常時,保存CPSR值,異常退出時,將該值恢復到CPSR,每一中異常運行模式(除usr和sys)有各自的物理寄存器。其功能:保存ALU中的當前操作信息;控制允許和禁止中斷;設置處理器的運行模式


統計上述,ARM處理器共有:
8個未分組(R0~R7)寄存器共享物理寄存器
2×5個分組物理寄存器:fiq模式分別獨享一個fiq物理寄存器(對應R8_fiq~R14_fiq),其餘模式分別共享一個通用物理寄存器
6個堆棧指針物理寄存器,R13×6
6個LR物理寄存器      R14×6
1個程序計數物理寄存器
6個狀態物理寄存器:一個CPSR,5個SPSR

8+10+6+6+1+6 = 37個物理寄存器

Thumb狀態:
出去R8~R14未分組部分
SP 對應 ARM狀態R13
LR 對應 ARM狀態R14
PC 對應 ARM狀態R15
CPSR對應ARM狀態CPSR
SPSR 對應ARM狀態SPSR
程序狀態寄存器位標識:

條件標識位        保留        控制位
31        30        29        28        27        26        25        24        …        8        7        6        5        4        3        2        1        0
N        Z        C        V        .        .        .                …                I        F        T        M4        M3        M2        M1        M0

說明:
條件標識位[31 : 28]:它們的內容可被算術或邏輯運算的結果所改變,並且可以決定某條指令是否被執行。在ARM狀態下,絕大多數指令都是有條件的執行的,在Thumb狀態下,只有分支指令被有條件的執行
N:當用兩個補碼錶示的帶符號數進行運算時,N=1 表示運算的結果爲負數;N=0 表示運算的結果爲正數或零;
Z:Z=1 表示運算的結果爲零;Z=0表示運算的結果爲非零;
C:可以有4種方法設置C的值:
─ 加法運算(包括比較指令CMN):當運算產生了進位時(無符號數溢出),C=1,否則C=0。─ 減法運算(包括比較指令CMP):當運算時產生了借位(無符號數溢出),C=0,否則C=1。
─ 對於包含移位操作的非加/減運算指令,C爲移出值的最後一位。
─ 對於其他的非加/減運算指令,C的值通常不改變。
V:可以有2種方法設置V的值:
─ 對於加/減法運算指令,當操作數和運算結果爲二進制的補碼錶示的帶符號數時,V=1表示符號位溢出。
─ 對於其他的非加/減運算指令,C的值通常不改變。
保留位[27 : 8]:當改變PSR中的條件碼標誌位或者控制位時,保留位不要被改變,在程序中也不要使用保留位來存儲數據。保留位將用於ARM版本的擴展。

控制位[7 : 0]:PSR的低8位(包括I、F、T和M[4:0])稱爲控制位,當發生異常時這些位可以被改變。如果處理器運行特權模式,這些位也可以由程序修改。

I:I =1 表示禁止外部(硬件)中斷(IRQ)
F:F=1 表示快速中斷(FIQ)
T:反映處理器的運行狀態。
對於ARM體系結構v5及以上的版本的T系列處理器,當該位爲1時,程序運行於Thumb狀態,否則運行於ARM狀態。對於ARM體系結構v5及以上的版本的非T系列處理器,當該位爲1時,執行下一條指令以引起爲定義的指令異常;當該位爲0時,表示運行於ARM狀態。

運行模式位M[4 : 0]:M0、M1、M2、M3、M4是模式位。這些位決定了處理器的運行模式。具體含義如表2-2所示:
表2-2        運行模式位M[4:0]的具體含義
M[4:0]        處理器模式        可訪問的寄存器
0b10000        用戶模式        PC,CPSR,R0-R14
0b10001        FIQ模式        PC,CPSR, SPSR_fiq,R14_fiq-R8_fiq, R7~R0
0b10010        IRQ模式        PC,CPSR, SPSR_irq,R14_irq,R13_irq,R12~R0
0b10011        管理模式        PC,CPSR, SPSR_svc,R14_svc,R13_svc,,R12~R0,
0b10111        中止模式        PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12~R0,
0b11011        未定義模式        PC,CPSR, SPSR_und,R14_und,R13_und, R12~R0,
0b11111        系統模式        PC,CPSR(ARM v4及以上版本), R14~R0
由表2-2可知,並不是所有的運行模式位的組合都是有效地,其他的組合結果會導致處理器進入一個不可恢復的狀態

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章