1. 程式人生 > >ARM彙編:MRS和MSR指令

ARM彙編:MRS和MSR指令

                        ARM彙編:MRS和MSR指令

ARM中有兩條指令用於在狀態暫存器和通用暫存器之間傳送資料。

一:下面先來說說狀態暫存器

針對32位的ARM處理器,狀態暫存器就是一個32位長的暫存器。每個位的含義如下圖:


分成了4部分:

1,條件標誌位

N(Negative), Z(Zero), C(Carry), V(Verflow)統稱為條件標誌位。ARM指令可以根據CPSR中的這些條件標誌位來選擇性的執行。

2,Q標誌位

ARM v5的E系列處理器中,CPSR的bit[27]稱為Q標誌位。主要用於指示增強的DSP指令是否發生了溢位。

3,控制位

I, F, T以及M[4:0]統稱為控制位。當異常中斷髮生時,這些位發生變化。在特權級的處理器模式下,軟體可以修改這些控制位。

下表示控制位M[4:0]的含義:

4,保留位
 用於將來ARM版本的擴充套件。


二:狀態暫存器訪問指令僅有兩條:

MRS: 狀態暫存器到通用暫存器的傳送指令。

MSR: 通用暫存器到狀態暫存器的傳送指令。

三:MRS指令用法:


四:MSR指令用法:

 其中:

<cond>為指令執行的條件碼。當<cond>忽略時指令為無條件執行。

<fields>設定狀態暫存器中需要操作的位。狀態暫存器的32位可以分為4個8位的域:

    f: 指示bits[31 : 24],又名條件標誌位域

    s: 指示bits[23 : 16],又名狀態標誌位域

    x: 指示bits[15 : 8], 又名擴充套件位域

    c: 指示bits[7 : 0],又名控制位
<immediate>為將要傳送到狀態暫存器中的立即數,該立即數的計算方式可以去照看<ARM+Architecture+Reference+Manual.pdf>

<Rm>暫存器包含將要傳送到狀態暫存器中的資料。

 

指令的操作虛擬碼: