微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM处理器模式及寄存器

ARM处理器模式及寄存器

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

  • 令地址值加8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。(因为ARM使用RISC精简指令集,ARM的一条指令所占内存为32位,4个字节。所以当一条指令正确读取时,该寄存器指向当前指令地址加8,即指向下两条指令的地址)

  • 当成功地向R15中写入一个地址数值时,程序将跳到该地址执行。由于ARM指令是字对齐的,所以PC值的第0位和第1位总为0。需要注意的是,当使用指令STR/STM保存R15时,保存的可能是当前指令地址值加8字节,也可能保存的是当前指令地址加12字节。到底是哪种方式,取决于芯片具体设计方式。无论如何,在同一芯片中,要么采用当前指令地址加8,要么采用当前指令地址加12,不能有些指令采用当前指令地址加8,另一些指令采用当前指令地址加12。因此对于用户来说,尽量避免使用STR/STM指令来保存R15的值。当不可避免这种使用方式时,可以先通过一些代码来确定所用的芯片使用的是哪种实现方式。

  • 对于ARM版本4以及更高的版本,程序必须保证写入R15寄存器的地址值的bits[1:0]为0b00;否则将会产生不可预知的结果。

  • 对于Thumb指令集来说,指令是半字对齐的。处理器将忽略bit[0],即写入R15的地址值首先与0XFFFFFFFE做与操作,再写入R15中。

  • 还有—些指令对于R15的用法有一些特殊的要求。比如,指令BX利用bit[0]来确定是ARM指令,还是Thumb指令。这种读取PC值和写入PC值的不对称的操作需要特别注意。

注:PC指向的地址是取指单元要取指令的地址,而不是当前执行的指令。

2、程序状态寄存器

CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器(CPSR)的内容。在异常中断程序退出时,可以用SPSR中保存的值来恢复CPSR。

由于用户模式和系统模式不是异常中断模式,所以它们没有SPSR。当在用户模式或系统模式中访问SPSR,将会产生不可预知的结果。

CPSR的格式如下所示。SPSR格式与CPSR格式相同。

31

30

29

28

27

26

7

6

5

4

3

2

1

0

N

Z

C

V

Q

DNM(RAZ)

I

F

T

M4

M3

M2

M1

M0

1.条件标志位

N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位来选择性地执行。

在ARM状态下,绝大多数的指令都是有条件执行的。
在Thumb状态下,仅有分支指令是有条件执行的。

N  Negative        对于有符号运算,如果结果是负数则置位Z  Zero            如果结果是零则置位C  Carry           对于无符号运算,如果发生进位则置位V  Overflow        对于有符号运算,如果发生溢出则置位I  IRQ             中断禁用F  FIQ             快速中断禁用

标志位

含义

N

本位设置成当前指令运算结果的bit[31]的值

当两个补码表示的有符号整数运算时,N=1表示运算的结果为负数;N=0表示结果为正数或零

Z

Z=1表示运算的结果为零;Z=0表示运算的结果不为零。

对于CMP指令,Z=1表示进行比较的两个数大小相等。

C

下面分4种情况讨论C的设置方法:

在加法指令中(包括比较指令CMN),当结果产生了进位,则C=1,表示无符号数运算发生上溢出;其他情况下C=0。

在减法指令中(包括比较指令CMP),当运算中发生借位则C=0表示无符号数运算发生下溢出;其他情况下C=1。

对于包含移位操作的非加/减法运算指令,C中包含最后一次溢出的位数数值。

对于其他非加/减法运算指令,C位的值通常不受影响。

V

对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时V=1表示符号位溢出。

通常其他的指令不影响V位,具体可参考各指令的说明。

2.Q标志位

在ARMv5的E系列处理器中,CPSR的bit[27]称为Q标志位,主要用于指示增强的DSP指令是否发生了溢出。同样的SPSR中的bit[27]也称为Q标志位,用于在异常中断发生时保存和恢复CPSR中的Q标志位。

在ARM v5以前的版本及ARM v5的非E系列的处理器中,Q标志位没有被定义。CPSR的bit[27]属于DNM(RAZ)。

3.CPSR中的控制位

CPSR的低8位I、F、T及M[4:0]统称为控制位。当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。

1)中断禁止位

  • 当I=1时禁止IRQ中断。
  • 当F=1时禁止FIQ中断。

2)T控制位

T控制位用于控制指令执行的状态,即说明本指令是ARM指令,还是Thumb指令。对与不同版本的ARM处理器,T控制位的含义不同。

对于ARMv4以及更高版本的T系列的ARM处理器,

  • T=0表示执

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

网站地图

Top