首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM微处理器的体系结构(6)

ARM微处理器的体系结构(6)

2).程序状态寄存器

  

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

  

CPSRSPSR的格式如下:

  

1)条件码标志

  

n
NZCVNegativeZeroCarryoVerflow)均为条件码标志位(Condition Code Flags),它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。CPSR中的条件码标志可由大多数指令检测以决定指令是否执行。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。

  

n
通常条件码标志通过执行比较指令(CMNCMPTEQTST)、一些算术运算、逻辑运算和传送指令进行修改。

  

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

  

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

  

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

  

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

  一-加法(包括比较指令CMN)。若加法产生进位(即无符号溢出),则C1;否则置0
  一-减法(包括比较指令CMP)。若减法产生借位(即无符号溢出),则C0;否则置1
  一-对于结合移位操作的非加法/减法指令,C置为移出值的最后1位。
  一-对于其他非加法/减法指令,C通常不改变。
  

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

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

一-对于非加法/减法指令,V通常不改变。
  
2
)控制位
       程序状态寄存器PSRProgram Status Register)的最低8IFTM[40]用作控制位。当异常出现时改变控制位。处理器在特权模式下时也可由软件改变。
  

n
a.中断禁止位

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

n
bT

  
T=0
指示ARM执行;
  
T=1
指示Thumb执行。
  

n
c.模式控制位

  
M4
M3M2MlM0M[4:0])是模式位,决定处理器的工作模式,如下表所列。
  

< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />

  

  
  

Thumb状态与ARM状态的寄存器关系

继承事业,薪火相传
返回列表