我正在学习 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)
有关 ARM 指令集问题的第一个参考点是相关的 ARM 架构手册。例如,Cortex-M3 使用ARMv7-M。
在那里你可以找到:
B5.2.2 MRS从特殊寄存器移至寄存器
将值从选定的专用寄存器移至通用寄存器。
在不同的地方都有特定的专用寄存器的列表,例如本文,并且在 SoC 中使用的特定内核的架构手册和技术参考手册 (TRM) 中提供了更明确的列表。
特殊用途寄存器是在架构上定义的处理器内部状态,例如 ALU 标志、异常模型状态、安全控制等。它们与 r0-r14“通用”寄存器不同,后者可用于处理器的主要部分。指令系统。处理器安全模型通常会限制对大部分状态的访问(因此用户代码无法升级其自己的权限)。
使用特定指令来访问特殊用途寄存器(以及紧密链接的协处理器寄存器),部分是为了提供相关的权限检查,部分是为了增加可寻址空间(代价是只提供两种类型的操作) 。
| 归档时间: |
|
| 查看次数: |
16393 次 |
| 最近记录: |