ARM状态寄存器

  ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs)。备份的程序状态寄存器用来进行异常处理,其功能包括:

─ 保存ALU中的当前操作信息

─ 控制允许和禁止中断

─ 设置处理器的运行模式

条件码标志(Condition Code Flags)

N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。

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

在Thumb状态下,仅有分支指令是有条件执行的。

控制位

PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。

─ 中断禁止位I、F:

I=1 禁止IRQ中断;

F=1 禁止FIQ中断。

─ T标志位:该位反映处理器的运行状态。

对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。

对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。

─ 运行模式位M[4:0]:M0、M1、M2、M3、M4是模式位。这些位决定了处理器的运行模式。

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

 

并不是所有的运行模式位的组合都是有效地,其他的组合结果会导致处理器进入一个不可恢复的状态。

除了用户模式之外的其他6种处理器模式称为特权模式,在这些模式下,程序可以访问所有的系统,也可以任意地进行处理器模式切换,其中,除了系统模式外,其他的5种特权模式又称为异常模式。

处理器模式可以通过控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程 序运行在用户模式下,这时,应用程序不能访问一些受操作系统保护的系统,应用程序也不能直接进行处理器模式切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。这种体系结构可以使操作系统控制整个系统的。

当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式种都有一组寄存器,供相应的异常处理程序使用,这样就可以保证进入异常模式时,用户模式下的寄存器不被破坏。

系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器,但是系统模式属于特权模式,可以访问所有的系统,也可以直接进行处理器模式切换,它主要供操作系统任务使用。

ARM处理器中的寄存器R0~R14都有累加功能,R15也有累加功能,但使用受到一定的限 制。ARM处理器中的寄存器R 在ARM处理器中,共有37个寄存器,排列顺序R0~R15等。R15也是程序计数器PC,它和PC两种助记符在程序中都是有效的。还有一个程序状态寄存器CPSR不在这个排列之内。

关于寄存器R0~R7:这组寄存器在物理上是唯一的,所有的模式下都可以使用。所

以在由用户模式进入异常中断时要小心。在中断服务程序中使用这些寄存器时,最好先加以保护;退出中断时再重新恢复,避免游泳数据丢失。

 关于寄存器R8~R12:这些寄存器在物理上有两组。一组是通用的R8~R12,可以在FIQ模式以外的所有模式下使用。而在FIQ模式中有专门的一组R8_fiq~R12_fiq供中断使用。

    关于寄存器R13、R14:这两个寄存器在物理上共有6组。用户模式和系统模式共用1 组,其他异常模式各有一组。R13习惯上把它当做堆栈指针,与51系列中的SP等同。R14又称为链接寄存器LR。ARM处理器执行异常中断时,硬件自动 把程序中断处的地址拷贝到R14中,而在中断程序执行完后,使用一条指令把R14中的地址值恢复给程序计数器PC,这样才能返回到程序中断处。

    关于程序计数器PC(R15):ARM处理器中的R15是程序计数器,又可称为 PC,R15和PC的两种表达在编程时都是有效的。    程序状态寄存器CPSR:CPSR为各种模式下的通用的状态寄存器,为了安全地进行中断处理,各种模式都有自己的备份状态寄存器SPSR,其作用是:当处理器响应中断时,处理器硬件自动把当前CPSR的状态存储到SPSR中,避免中断处理程序在使 用CPSR时改变原来的状态,对中断返回造成影响。而在中断返回时,程序要使用一条指令把SPSR中保存的内容恢复到CPSR中。如:MOV PC,LR 。

13一般作为堆栈指针使用,和51系列的单片机的SP是等同的,且也称SP。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值