微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM汇编编程基础之一-寄存器

ARM汇编编程基础之一-寄存器

时间:11-27 来源:互联网 点击:

r),中文名称:当前程序状态寄存器,顾名思义它是用于保存程序的当前状态的。那么,程序的哪些状态是需要保存的呢?

上图是CPSR寄存器的内容,主要由以下部分组成:

1、条件代码标志位。它们是ARM指令条件执行的依据。

N:运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;

Z:指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;

C:当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP 指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变

V:当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变

2、控制位。它们将控制CPU是否响应中断。

I:中断禁止位,当I位置位时,IRQ中断被禁止

F:快中断禁止位,当F位置位时,FIQ中断被禁止

T:反映了CPU当前的状态。当T位置位时,处理器正在Thumb状态下运行;当T位清零时,处理器正在ARM状态下运行

3、模式位

包括M4、M3、M2、M1和M0,这些位决定了处理器的模式(关于处理器模式详见“ARM处理器模式与异常初步”一文)。

总共有7种模式:用户、快中断、中断、管理、中止、未定义、系统,分别会用于不同的情况和异常。由此可见,不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。

SPSR(saved program status register),中文名称:保存的程序状态寄存器

该寄存器的结构与CPSR完全一样,在异常发生时(关于异常,请参见“ARM处理器模式与异常初步”一文),由硬件自动将异常发生前的CPSR的值存放到SPSR中,以便将来在异常处理结束后,程序能恢复原来CPSR的值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top