日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ARM】MRS MSR指令

發布時間:2024/4/24 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ARM】MRS MSR指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. 狀態操作指令概述
    • 02. MRS
      • 2.1 指令的語法格式
      • 2.2 指令示例
    • 03. MSR
      • 3.1 指令的語法格式
      • 3.2 應用示例
    • 04. 綜合應用
      • 4.1 使能 IRQ 中斷
      • 4.2 禁止 IRQ 中斷
      • 4.3 堆棧指令初始化
    • 05. 附錄

01. 狀態操作指令概述

ARM 指令集提供了兩條指令,可直接控制程序狀態寄存器(Program State Register,PSR)。MRS 指令用于把 CPSR 或 SPSR 的值傳送到一個寄存器;MSR 與之相反,把一個寄存器的內容傳送到 CPSR 或 SPSR。這兩條指令相結合,可用于對 CPSR 和 SPSR 進行讀/寫操作。程序狀態寄存器指令如下表所示。

在指令語法中可看到一個稱為 fields 的項,它可以是控制(C)、擴展(X)、狀態(S)及標志(F)的組合。

02. MRS

MRS 指令用于將程序狀態寄存器的內容傳送到通用寄存器中。在 ARM 處理器中,只有 MRS 指令可以將狀態寄存器 CPSR 或 SPSR 讀出到通用寄存器中。

2.1 指令的語法格式

MRS{cond} Rd,PSR # 其中,Rd 為目標寄存器,Rd 不允許為程序計數器(PC)。PSR 為 CPSR 或 SPSR。

2.2 指令示例

MRS R1,CPSR ;將 CPSR 狀態寄存器讀取,保存到 R1 中 MRS R2,SPSR ;將 SPSR 狀態寄存器讀取,保存到 R1 中

MRS 指令讀取 CPSR,可用來判斷 ALU 的狀態標志及 IRQ/FIQ 中斷是否允許等;在異常處理程序中,讀 SPSR 可指定進入異常前的處理器狀態等。MRS 與 MSR 配合使用,實現 CPSR 或 SPSR 寄存器的讀—修改—寫操作,可用來進行處理器模式切換,允許/禁止IRQ/FIQ 中斷等設置。另外,進程切換或允許異常中斷嵌套時,也需要使用 MRS 指令讀取SPSR 狀態值并保存起來。

03. MSR

在 ARM 處理器中,只有 MSR 指令可以直接設置狀態寄存器 CPSR 或 SPSR。

3.1 指令的語法格式

MSR{cond} PSR_field,#immed_8r MSR{cond} PSR_field,Rm

其中,PSR 是指 CPSR 或 SPSR。設置狀態寄存器中需要操作的位。狀態寄存器的 32 位可以分為 4 個 8 位的域(field)。bits[31:24]為條件標志位域,用 f 表示;bits[23:16]為狀態位域,用 s 表示;bits[15:8]為擴展位域,用 x 表示;bits[7:0]為控制位域,用 c 表示;immed_8r 為要傳送到狀態寄存器指定域的立即數,8 位;Rm 為要傳送到狀態寄存器指定域的數據源寄存器。

3.2 應用示例

MSR CPSR_c,#0xD3 ;CPSR[7:0]=0xD3,切換到管理模式 MSR CPSR_cxsf,R3 ;CPSR=R3

溫馨提示

只有在特權模式下才能修改狀態寄存器。

程序中不能通過 MSR 指令直接修改 CPSR 中的 T 位控制位來實現 ARM 狀態/Thumb狀態的切換,必須使用 BX 指令來完成處理器狀態的切換(因為 BX 指令屬轉移指令,它會打斷流水線狀態,實現處理器狀態的切換)。MRS 與 MSR 配合使用,實現 CPSR 或 SPSR寄存器的讀—修改—寫操作,可用來進行處理器模式切換及允許/禁止IRQ/FIQ中斷等設置。

04. 綜合應用

4.1 使能 IRQ 中斷

ENABLE_IRQ:MRS R0,CPSRBIC R0,R0,#0x80MSR CPSR_c,R0MOV PC,LR

4.2 禁止 IRQ 中斷

DISABLE_IRQ:MRS R0,CPSRORR R0,R0,#0x80MSR CPSR_c,R0MOV PC,LR

4.3 堆棧指令初始化

INITSTACK:MOV R0,LR ;保存返回地址@ 設置管理模式堆棧: MSR CPSR_c,#0xD3 LDR SP,StackSvc@設置中斷模式堆棧: MSR CPSR_c,#0xD2 LDR SP,StackSvc

05. 附錄

11.1 ARM Architecture Reference Manual

總結

以上是生活随笔為你收集整理的【ARM】MRS MSR指令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。