2种运行状态:
ARM状态(32位)、Thumb状态(16位),两种状态之间可任意切换;
7种运行模式:
用户模式usr
快速中断fiq
外部中断irq
管理svc
系统sys
数据访问中止abt
未定义指令中止und
寄存器组织:
ARM状态:
R0~R14 通用寄存器
R0~R7 未分组寄存器,所有7种运行模式下指向同一物理寄存器,在中断或异常处理等模式转换时,需防止寄存器中数据的破坏。
R8~R14 分组 根据不同的运行模式访问不同的物理寄存器
R8~R12 除fiq外,其余同usr模式
R13~R14 除usr、sys外,其余有各自分组模式
R15 PC 程序计数器
R16 状态寄存器
CPSR通用
SPSR 除usr、sys外,用于异常保护的CPSR的备份,异常时,保存CPSR值,异常退出时,将该值恢复到CPSR
Thumb状态:
R0~R7 通用
SP对应ARM状态R13
LR对应ARM状态R14
PC对应ARM状态R15
CPSR和SPSR与ARM状态同
R13 -SP stack pointer 堆栈指针,用于取指令操作
R14 -LR Load register 用于程序调用
PC -程序计数器,总是指向当前指令的下两条指令,即PC值为当前指令地址值加8个字节
程序状态寄存器:
CPSR 每一中模式下访问同一物理寄存器
SPSR 除usr、sys外,用于异常保护的CPSR的备份,异常时,保存CPSR值,异常退出时,将该值恢复到CPSR,每一中异常运行模式(除usr和sys)有各自的物理寄存器。其功能:保存ALU中的当前操作信息;控制允许和禁止中断;设置处理器的运行模式
统计上述,ARM处理器共有:
8个未分组(R0~R7)寄存器共享物理寄存器
2×5个分组物理寄存器:fiq模式分别独享一个fiq物理寄存器(对应R8_fiq~R14_fiq),其余模式分别共享一个通用物理寄存器
6个堆栈指针物理寄存器,R13×6
6个LR物理寄存器 R14×6
1个程序计数物理寄存器
6个状态物理寄存器:一个CPSR,5个SPSR
8+10+6+6+1+6 = 37个物理寄存器
Thumb状态:
出去R8~R14未分组部分
SP 对应 ARM状态R13
LR 对应 ARM状态R14
PC 对应 ARM状态R15
CPSR对应ARM状态CPSR
SPSR 对应ARM状态SPSR
程序状态寄存器位标识:
条件标识位 保留 控制位
31 30 29 28 27 26 25 24 … 8 7 6 5 4 3 2 1 0
N Z C V . . . … I F T M4 M3 M2 M1 M0
说明:
条件标识位[31 : 28]:它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数指令都是有条件的执行的,在Thumb状态下,只有分支指令被有条件的执行
N:当用两个补码表示的带符号数进行运算时,N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零;
Z:Z=1 表示运算的结果为零;Z=0表示运算的结果为非零;
C:可以有4种方法设置C的值:
─ 加法运算(包括比较指令CMN):当运算产生了进位时(无符号数溢出),C=1,否则C=0。─ 减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1。
─ 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。
─ 对于其他的非加/减运算指令,C的值通常不改变。
V:可以有2种方法设置V的值:
─ 对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。
─ 对于其他的非加/减运算指令,C的值通常不改变。
保留位[27 : 8]:当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。
控制位[7 : 0]:PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。
I:I =1 表示禁止外部(硬件)中断(IRQ)
F:F=1 表示快速中断(FIQ)
T:反映处理器的运行状态。
对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。
运行模式位M[4 : 0]:M0、M1、M2、M3、M4是模式位。这些位决定了处理器的运行模式。具体含义如表2-2所示:
表2-2 运行模式位M[4:0]的具体含义
M[4:0] 处理器模式 可访问的寄存器
0b10000 用户模式 PC,CPSR,R0-R14
0b10001 FIQ模式 PC,CPSR, SPSR_fiq,R14_fiq-R8_fiq, R7~R0
0b10010 IRQ模式 PC,CPSR, SPSR_irq,R14_irq,R13_irq,R12~R0
0b10011 管理模式 PC,CPSR, SPSR_svc,R14_svc,R13_svc,,R12~R0,
0b10111 中止模式 PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12~R0,
0b11011 未定义模式 PC,CPSR, SPSR_und,R14_und,R13_und, R12~R0,
0b11111 系统模式 PC,CPSR(ARM v4及以上版本), R14~R0
由表2-2可知,并不是所有的运行模式位的组合都是有效地,其他的组合结果会导致处理器进入一个不可恢复的状态
文章评论(0条评论)
登录后参与讨论