1. 程式人生 > >嵌入式課程有關CPSR程式狀態暫存器的解析

嵌入式課程有關CPSR程式狀態暫存器的解析

1.定義:

CPSR:程式程式狀態暫存器(current program status register) cpsr在使用者級程式設計時用於儲存條件碼;CPSR包含條件碼標誌,中斷禁止位,當前處理器模式以及其他狀態和控制資訊。

結構詳情參見下圖:

 

2.CPSR格式如下:

31 30 29 28 27 26              7 6 5  4     3   2    1   0 N   Z  C   V  Q  DNM(RAZ) I F T M4 M3 M2 M1 M0   3.解析
***條件標誌位*** N——本位設定成當前指令運算結果的bit[31]的值。當兩個表示的有符號整數運算時,n=1表示運算結果為負數,n=0表示結果為正數或零。 z——z=1表示運算的結果為零;z=0表示運算的結果不為零。對於CMP指令,Z=1表示進行比較的兩個數大小相等。 C——下面分四種情況討論C的設定方法: 在加法指令中(包括比較指令CMN),當結果產生了進位,則C=1,表示無符號運算髮生溢位overflow;其他情況C=0。 在減法指令中(包括比較指令CMP),當運算中發生借位,則C=0,表示無符號運算數發生進位;其他情況下C=1。 對於包含移位操作的非加減運算指令,C中包含最後一次溢位的位的數值 對於其他非加減運算指令,C位的值通常不受影響 V——對於加減運算指令,當運算元和運算結果為二進位制的補碼錶示的帶符號數時,V=1表示符號位溢位;通常其他指令不影響V位。   ***Q標識位*** 在ARM V5的E系列處理器中,CPSR的bit[27]稱為q標識位,主要用於指示增強的dsp指令是否發生了溢位。同樣的spsr的bit[27]位也稱為q標識位,用於在異常中 斷髮生時儲存和恢復CPSR中的Q標識位。 在ARM V5以前的版本及ARM V5的非E系列的處理器中,Q標識位沒有被定義。   ***CPSR中的控制位*** CPSR的低八位I、F、T、M[4:0]統稱為控制位。當異常中斷髮生時這些位發生變化。在特權級的處理器模式下,軟體可以修改這些控制位。 **中斷禁止位:當I=1時禁止IRQ中斷,當F=1時禁止FIQ中斷 **T控制位:T控制位用於控制指令執行的狀態,即說明本指令是ARM指令還是Thumb指令。對於ARM V4以更高版本的T系列ARM處理器,T控制位含義如下: T=0表示執行ARM指令 T=1表示執行Thumb指令 對於ARM V5以及更高版本的非T系列處理器,T控制位的含義如下 T=0表示執行ARM指令 T=1表示強制下一條執行的指令產生未定指令中斷   ***M控制位*** M控制位控制處理器模式,具體含義如下:
    ***CPSR中的其他位*** 這些位用於將來擴充套件。應用軟體不要操作這些位。 CPSP也叫恆功率調速比,是英文constant power speed ratio的縮寫。常出現於永磁電機控制方法中。