4.10.4. MSR

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

其中:

cond

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

flags

指定要移动的 APSR 标记。flags 可以是以下项中的一个或多个:

nzcvq

ALU 可标记字段掩码,PSR[31:27](用户模式)

g

SIMD GE 可标记字段掩码,PSR[19:16](用户模式)。

constant

是取值为常数的一个表达式。 该常数必须对应于一个 8 位结构,可通过在 32 位字内循环移动偶数位而得到。 在 Thumb 中不可用。

Rm

是源寄存器。

psr

是下列项之一:

CPSR

用于调试状态,请不要将其看做 APSR 的同义词

SPSR

仅可用于特权模式下的处理器。

fields

指定要移动的 SPSR 或 CPSR 字段。fields 可以是以下项中的一个或多个:

c

控制字段掩码字节,PSR[7:0](特权模式)

x

扩展字段掩码字节,PSR[15:8](特权模式)

s

状态字段掩码字节,PSR[23:16](特权模式)

f

标记字段掩码字节,PSR[31:24](特权模式)

语法(仅用于 ARMv7-M 和 ARMv6-M)

MSR{cond} psr, Rm

其中:

cond

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

Rm

是源寄存器。

psr

可以是下列项之一: APSRIPSREPSRIEPSRIAPSREAPSRXPSRMSPPSPPRIMASKBASEPRIBASEPRI_MAXFAULTMASKCONTROL

用法

请参阅MRS

在用户模式中:

  • 使用 APSR 访问条件标记、Q 或 GE 位。

  • 忽略对 CPSR 中的未分配状态位、特权状态位或执行状态位的写入。 这可确保用户模式程序不会更改为 特权模式。

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

条件标记

如果指定了 APSR_nzcvqCPSR_f 字段,则此指令将会显式更新标记。

体系结构

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

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

此指令无 16 位 Thumb 版本。

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