将立即数或通用寄存器的内容加载到程序状态寄存器 (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 版本。