新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 详解ARM处理寄存器与用户模式

详解ARM处理寄存器与用户模式

作者:时间:2018-09-14来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/201809/389174.htm

程序状态寄存器

寄存器R16用作程序状态寄存器CPSR(Current Program Status Register,当前程序状态寄存器)。在所有处理器模式下都可以访问CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。每种异常模式都有一个程序状态保存寄存器SPSR(Saved Program Status Register)。当异常出现SPSR用于保留CPSR的状态。

CPSR和SPSR的格式如下:

(1)条件码标志

N、Z、C、V(Negative、Zero、Carry、oVerflow)均为条件码标志位(Condition Code Flags),它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。CPSR中的条件码标志可由大多数指令检测以决定指令是否执行。在状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。通常条件码标志通过执行比较指令(CMN、CMP、TEQ、TST)、一些算术运算、逻辑运算和传送指令进行修改。

条件码标志的通常含义如下:

N:如果结果是带符号二进制补码,那么,若结果为负数,则N=1;若结果为正数或0,则N=0。

Z:若指令的结果为0,则置1(通常表示比较的结果为“相等”),否则置0。

C:可用如下4种方法之一设置:

一-加法(包括比较指令CMN)。若加法产生进位(即无符号溢出),则C置1;否则置0。

一-减法(包括比较指令CMP)。若减法产生借位(即无符号溢出),则C置0;否则置1。

一-对于结合移位操作的非加法/减法指令,C置为移出值的最后1位。

一-对于其他非加法/减法指令,C通常不改变。

V:可用如下两种方法设置,即

一-对于加法或减法指令,当发生带符号溢出时,V置1,认为操作数和结果是补码形式的带符号整数。

一-对于非加法/减法指令,V通常不改变。

(3)控制位

程序状态寄存器PSR(Program Status Register)的最低8位I、F、T和M[4:0]用作控制位。当异常出现时改变控制位。处理器在特权模式下时也可由软件改变。

a.中断禁止位

I:置1,则禁止IRQ中断;

F:置1,则禁止FIQ中断。

b.T位

T=0 指示执行;

T=1 指示Thumb执行。

c.模式控制位

M4、M3、M2、Ml和M0(M[4:0])是模式位,决定处理器的工作模式,如表所列。

M[4:0]工作模式可访问的寄存器

10000PC,CPSR,R14~R0

10001FIQ模式PC,R7~R0,CPSR, SPSR_fiq,R14_fiq~R8_fiq

10010IRQ模式PC,R12~R0,CPSR, SPSR_irq,R14_irq,R13_irq

10011管理模式PC,R12~R0, CPSR, SPSR_svc,R14_svc,R13_svc

10111中止模式PC,R12~R0, CPSR, SPSR_abt,R14_abt,R13_abt

11011未定义模式PC,R12~R0, CPSR, SPSR_und,R14_und,R13_und

11111系统模式PC,R14~R0,CPSR( v4及以上版本)

并非所有的模式位组合都能定义一种有效的处理器模式。其他组合的结果不可预知。

(4)其他位

程序状态寄存器的其他位保留,用做以后的扩展。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭