ARM彙編 MRS和MSR指令

2021-08-31 19:08:27 字數 1067 閱讀 3041

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 指令 將記憶體內容加載入通...