我正在学习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.
答案 0 :(得分:1)
有关ARM指令集问题的第一站是相关的《 ARM体系结构手册》。例如,Cortex-M3使用ARMv7-M。
您可以找到:
B5.2.2 MRS 从特殊注册移至注册
将值从选定的专用寄存器移到一个 通用寄存器。
在各个地方都有特殊用途寄存器的列表,例如article,在体系结构手册和SoC中使用的特定内核的技术参考手册(TRM)中有更多定义。 / p>
特殊用途寄存器是处理器在架构上定义的内部状态,例如ALU标志,异常模型状态,安全控制等。这些与r0-r14“一般用途”寄存器不同,后者可用于主机。指令集的一部分。处理器安全模型通常会限制对此状态的访问(因此用户代码无法提升其自身的特权)。
使用特殊指令来访问特殊用途寄存器(并紧密链接协处理器寄存器),一方面可以提供相关的权限检查,另一方面可以增加可寻址空间(以仅提供两种类型为代价)操作)。