ARM彙編:MRS和MSR指令
阿新 • • 發佈:2018-11-16
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>暫存器包含將要傳送到狀態暫存器中的資料。
指令的操作虛擬碼: