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: 通用暫存器到狀態暫存器的傳送指令。
其中:為指令執行的條件碼。當忽略時指令為無條件執行。
設定狀態暫存器中需要操作的位。狀態暫存器的32位可以分為4個8位的域:
f: 指示bits[31 : 24],又名條件標誌位域
s: 指示bits[23 : 16],又名狀態標誌位域
x: 指示bits[15 : 8], 又名擴充套件位域
c: 指示bits[7 : 0],又名控制位
為將要傳送到狀態暫存器中的立即數,該立即數的計算方式可以去照看
暫存器包含將要傳送到狀態暫存器中的資料。
指令的操作偽**:
arm彙編指令中MRS和MSR
mrs指令的格式為 mrs 通用暫存器,程式狀態暫存器 cpsr戒spsr mrs指令用亍將程式狀態暫存器的內容傳送到通用暫存器中。該指令一般用在以下兩種情冴 當需要改變程式狀態暫存器的內容時,可用mrs將程式狀態暫存器的內容讀入通用暫存器,修改後再寫回程式狀態暫存器。當在異常處理戒迕程切換時,需要...
ARM彙編指令
b或bl指令引起處理器轉移到 子程式名 也就是位址 處開始執行,這兩個指令都是相對跳轉指令。兩者的不同之處在於bl指令在轉移到子程式執行之前,將其下一條指令的位址拷貝到r14 lr,鏈結暫存器 由於bl指令儲存了下條指令的位址,因此使用指令 mov pc lr 即可實現子程式的返回。而b指令則無法實...
arm彙編指令
一般arm官方風格彙編指令為大寫,windows ads mdk 實際運用一般用gnu風格,為小寫,linux 1 arm採用risc架構,cpu本身不能直接讀取內 存,而需要先將記憶體中內容加載入cpu中通用寄 存器中才能被 cpu處理 ldr loadregister 指令 將記憶體內容加載入通...