微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM的2种工作状态,7种工作模式和37个寄存器

ARM的2种工作状态,7种工作模式和37个寄存器

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

在ARM状态下,任一时刻可以访问以上所讨论的16个通用寄存器和一到两个状态寄存器。在非用户模式(特权模式)下,则可访问到特定模式分组寄存器,上图说明在每一种运行模式下,哪一些寄存器是可以访问的。
寄存器R16:
寄存器R16用作CPSR(Current Program Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。
每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(Saved Program Status Register,备份的程序状态寄存器),当异常发生时,SPSR用于保存CPSR的当前值,从异常退出时则可由SPSR来恢复CPSR。
由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。
3.2 Thumb工作状态下的寄存器组织
Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、 连接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。图2.4表明Thumb状态下的寄存器组织。

Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系:
─ Thumb状态下和ARM状态下的R0~R7是相同的。
─ Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。
─ Thumb状态下的SP对应于ARM状态下的R13。
─ Thumb状态下的LR对应于ARM状态下的R14。
─ Thumb状态下的程序计数器对应于ARM状态下R15
以上的对应关系如图2.5所示:

访问THUMB状态下的高位寄存器(Hi-registers):
在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。使用带特 殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。

程序状态寄存器
ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs)。备份的程序状态寄存器用来进行异常处理,其功能包括:
─ 保存ALU中的当前操作信息
─ 控制允许和禁止中断
─ 设置处理器的运行模式
程序状态寄存器的每一位的安排如下图所示:

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

N  Negative        如果结果是负数则置位Z  Zero            如果结果是零则置位C  Carry           如果发生进位则置位O  Overflow        如果发生溢出则置位

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

网站地图

Top