ARM程序狀態(tài)寄存器
ARM體系結(jié)構(gòu)包含一個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)和五個(gè)備份的程序狀態(tài)寄存器(SPSRs)。備份的程序狀態(tài)寄存器用來進(jìn)行異常處理,其功能包括:
─ 保存ALU中的當(dāng)前操作信息
─ 控制允許和禁止中斷
─ 設(shè)置處理器的運(yùn)行模式
條件碼標(biāo)志(Condition Code Flags)
N、Z、C、V均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行。
在ARM狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的。
在Thumb狀態(tài)下,僅有分支指令是有條件執(zhí)行的。
控制位
PSR的低8位(包括I、F、T和M[4:0])稱為控制位,當(dāng)發(fā)生異常時(shí)這些位可以被改變。如果處理器運(yùn)行特權(quán)模式,這些位也可以由程序修改。
─ 中斷禁止位I、F:
I=1 禁止IRQ中斷;
F=1 禁止FIQ中斷。
─ T標(biāo)志位:該位反映處理器的運(yùn)行狀態(tài)。
對于ARM體系結(jié)構(gòu)v5及以上的版本的T系列處理器,當(dāng)該位為1時(shí),程序運(yùn)行于Thumb狀態(tài),否則運(yùn)行于ARM狀態(tài)。
對于ARM體系結(jié)構(gòu)v5及以上的版本的非T系列處理器,當(dāng)該位為1時(shí),執(zhí)行下一條指令以引起為定義的指令異常;當(dāng)該位為0時(shí),表示運(yùn)行于ARM狀態(tài)。
─ 運(yùn)行模式位M[4:0]:M0、M1、M2、M3、M4是模式位。這些位決定了處理器的運(yùn)行模式。
并不是所有的運(yùn)行模式位的組合都是有效地,其他的組合結(jié)果會導(dǎo)致處理器進(jìn)入一個(gè)不可恢復(fù)的狀態(tài)。
保留位
PSR中的其余位為保留位,當(dāng)改變PSR中的條件碼標(biāo)志位或者控制位時(shí),保留位不要被改變,在程序中也不要使用保留位來存儲數(shù)據(jù)。保留位將用于ARM版本的擴(kuò)展。