首页 > 试题广场 >

以下关于ARM程序状态寄存器CPSR的说法正确的是( )。

[单选题]
以下关于ARM程序状态寄存器CPSR的说法正确的是(  )。
  • CPSR中N=1表示运算结果为正数
  • CPSR中F=0允许快速中断
  • CSPR中V=0表示运算结果溢出
  • CPSR中Z=0表示运算结果为0
       对于Cortex A7:
      N(31):有符号整数运算时, N=1 表示结果为负数, N=0表示结果为正数

       Z(30)Z=1 表示运算结果为零, Z=0 表示运算结果不为零,对于 CMP 指令, Z=1 表示进行比较的两个数大小相等

       C(29)在加法指令中,当结果产生了进位,则 C=1,表示无符号数运算发生上溢,其它情况下 C=0。在减法指令中,当运算中发生借位,则 C=0,表示无符号数运算发生下溢,其它情况下 C=1。对于包含移位操作的非加/减法运算指令, C 中包含最后一次溢出的位的数值,对于其它非加/减运算指令, C 位的值通常不受影响

       V(28):对于加/减法运算指令,当操作数和运算结果表示为二进制的补码表示的带符号数时, V=1 表示符号位溢出,通常其他位不影响 V

      Q(27):仅 ARM v5TE_J 架构支持,表示饱和状态, Q=1 表示累积饱和, Q=0 表示累积不饱和

       IT[1:0](26:25):和 IT[7:2](15:10)一起组成 IT[7:0],作为 IF-THEN 指令执行状态

       J(24):仅 ARM_v5TE-J 架构支持, J=1 表示处于 Jazelle 状态,此位通常和 T(5)位一起表示当前所使用的指令集

CPSR[24]J

CPSR[5]T

指令集

0

0

ARM

0

1

Thumb

1

1

ThumbEE

1

0

Jazelle

       GE[3:0](19:16) SIMD 指令有效,大于或等于。

       IT[7:2](15:10): 参考 IT[1:0]

     E(9): 大小端控制位, E=1 表示大端模式, E=0 表示小端模式。

     A(8): 禁止异步中断位, A=1 表示禁止异步中断。

     I(7) I=1 禁止 IRQ I=0 使能 IRQ

     F(6) F=1 禁止 FIQ F=0 使能 FIQ

     T(5): 控制指令执行状态,表明本指令是 ARM 指令还是 Thumb 指令,通常和 J(24)起表明指令类型,参考 J(24)

     M[4:0]: 处理器模式控制位

CPSR[4:0]M

模式

10000

User模式

10001

FIQ模式

10010

IRQ模式

10011

Supervisor(SVC)模式

10110

Monitor(MON)模式

10111

Abort(ABT)模式

11010

Hyp(HYP)模式

11011

Undef(UND)模式

11111

System(SYS)模式


发表于 2020-04-29 15:25:55 回复(0)
ARM所有工作模式下都可以访问程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。 CPSR在每个异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。当异常出现时,SPSR用于保存CPSR的值,以便异常返回后恢复异常发生时的工作状态。 N:在结果是有符号的二进制补码情况下,如果结果为负数,则N=1;如果结果为非负数,则N=0。 Z:如果结果为0,则Z=1;如果结果为非零,则Z=0。 V:对于加减法指令,在操作数和结果是有符号的整数时,如果发生溢出,则V=1;如果无溢出发生,则V=0;对于其他指令,V通常不发生变化。 选择B。
编辑于 2020-04-09 08:15:51 回复(0)