4.10.3. MRS

将 PSR 的内容移到通用寄存器中。

语法

MRS{cond} Rd, psr

其中:

cond

是一个可选的条件代码(请参阅条件执行)。

Rd

是目标寄存器。 Rd 不能为 r15。

psr

是下列项之一:

APSR

任何处理器,任何模式。

CPSR

不提倡使用的 APSR 同义词,用于调试状态,用于除 ARMv7-M 和 ARMv6-M 之外的任何处理器。

SPSR

用于除 ARMv7-M 和 ARMv6-M 之外的任何处理器,仅可用于特权模式。

Mpsr

仅用于 ARMv7-M 和 ARMv6-M 处理器。

Mpsr

可以是下列项之一: IPSREPSRIEPSRIAPSREAPSRMSPPSPXPSRPRIMASKBASEPRIBASEPRI_MAXFAULTMASKCONTROL

用法

可将 MRSMSR 结合使用,创建一个更新 PSR 的读-改-写序列,例如更改处理器模式或清除 Q 标记。

在进程交换代码中,必须保存程序员的换出进程的模型状态,包括 PSR 的相关内容。 同样,也必须恢复换入进程的状态。 这些操作使用的是 MRS/存储和加载/MSR 指令序列。

SPSR

当处理器处于用户或系统模式时,请不要访问 SPSR。 这是您的责任。 汇编器无法就此发出警告,因为它不知道执行过程中的处理器模式。

如果在处理器处于用户模式或系统模式时,尝试访问 SPSR,则结果将是无法预料的。

CPSR

仅当处理器处于调试状态、暂停调试模式时,才能读取 CPSR 执行状态位。 否则,CPSR 中的执行状态位的读取结果将会为零。

条件标记的读取不受模式和处理器的限制。 应使用 APSR,而不是 CPSR。

条件标记

此指令不更改标记。

体系结构

此 ARM 指令可用于所有版本的 ARM 体系结构。

这些 32 位 Thumb 指令可用于 ARMv6T2 及更高版本。

此指令无 16 位 Thumb 版本。

Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential