ARM中MSR和MRS指令的扩展是什么

Sre*_*ani 3 assembly arm

我正在学习 ARM,但无法理解程序状态寄存器指令、MSR 和 MRS 的完整形式。

例子:

MRS R0,CPSR         ; Take a copy of the CPSR.
BIC R0,R0,#0x1F     ; Clear the mode bits.
ORR R0,R0,#new_mode ; Select new mode
MSR CPSR,R0         ; Write back the modified CPSR.
Run Code Online (Sandbox Code Playgroud)

Sea*_*ane 7

有关 ARM 指令集问题的第一个参考点是相关的 ARM 架构手册。例如,Cortex-M3 使用ARMv7-M

在那里你可以找到:

B5.2.2 MRS从特殊寄存器移至寄存器

将值从选定的专用寄存器移至通用寄存器。

在不同的地方都有特定的专用寄存器的列表,例如本文并且在 SoC 中使用的特定内核的架构手册和技术参考手册 (TRM) 中提供了更明确的列表。

特殊用途寄存器是在架构上定义的处理器内部状态,例如 ALU 标志、异常模型状态、安全控制等。它们与 r0-r14“通用”寄存器不同,后者可用于处理器的主要部分。指令系统。处理器安全模型通常会限制对大部分状态的访问(因此用户代码无法升级其自己的权限)。

使用特定指令来访问特殊用途寄存器(以及紧密链接的协处理器寄存器),部分是为了提供相关的权限检查,部分是为了增加可寻址空间(代价是只提供两种类型的操作) 。