将立即数或通用寄存器的内容加载到程序状态寄存器 (PSR) 的指定字段中。
语法(ARMv7-M 和 ARMv6-M 除外)MSR
{cond
} APSR_flags
, #constant
MSR
{cond
} APSR_flags
, Rm
MSR
{cond
} psr
_fields
, #constant
MSR
{cond
} psr
_fields
, Rm
其中:
是一个可选的条件代码。
指定要移动的 APSR 标记。
可以是以下项中的一个或多个:flags
ALU 可标记字段掩码,PSR[31:27](用户模式)
SIMD GE 可标记字段掩码,PSR[19:16](用户模式)。
nzcvq
g
是取值为常数的一个表达式。 该常数必须对应于一个 8 位结构,可通过在 32 位字内循环移动偶数位而得到。在 Thumb 中不可用。
是源寄存器。
是下列项之一:
用于调试状态,请不要将其看做 APSR 的同义词
仅可用于特权模式下的处理器。
CPSR
SPSR
指定要移动的 SPSR 或 CPSR 字段。
可以是以下项中的一个或多个:fields
控制字段掩码字节,PSR[7:0](特权模式)
扩展字段掩码字节,PSR[15:8](特权模式)
状态字段掩码字节,PSR[23:16](特权模式)
标记字段掩码字节,PSR[31:24](特权模式)
c
x
s
f
cond
flags
constant
Rm
psr
fields
MSR
{cond
} psr
, Rm
其中:
是一个可选的条件代码。
是源寄存器。
可以是下列项之一:
APSR
、IPSR
、EPSR
、IEPSR
、IAPSR
、EAPSR
、XPSR
、MSP
、PSP
、PRIMASK
、BASEPRI
、BASEPRI_MAX
、FAULTMASK
或CONTROL
。
cond
Rm
psr
在用户模式中:
-
使用 APSR 访问条件标记、Q 或 GE 位。
-
忽略对 CPSR 中的未分配状态位、特权状态位或执行状态位的写入。 这可确保用户模式程序不会更改为 特权模式。
如果在用户或系统模式时尝试访问 SPSR,则结果将是无法预料的。
条件标记如果指定了 APSR_nzcvq
或 CPSR_f
字段,则此指令将会显式更新标记。
此 ARM 指令可用于所有版本的 ARM 体系结构。
此 32 位 Thumb 指令可用于 ARMv6T2 及更高版本。
此指令无 16 位 Thumb 版本。