ARM的七种工作模式介绍

       下图有9中模式,其中在Secure和Non-Secure状态下都适用的有七种,分别是User、FIQ、IRQ、Supervisor、Abort、Undefined和System。
在这里插入图片描述
       之所以记录ARM的这些工作模式,是因为在ARM的中断和异常中,经常会有工作模式的切换,而中断和异常也是ARM中很重要的一点,所以在这里记录一下工作模式的一些概念和一些细节。
       其中User模式是非特权模式,其他六种都是特权模式,特权模式中的每一种模式相互之间可以通过软件操作随便切换,也可以切换到User模式下,但是User模式不能通过软件操作切换到其他模式。

       ARM的这七种工作模式每一种都对应一组“独立”的寄存器:
在这里插入图片描述
       以上图中的红字是我为了方便描述自己标的,并不是寄存器名,而且不分先后顺序。
       注:
       ‡:表示安全扩展的一部分。仅在安全状态下存在。
       †:表示虚拟化扩展的一部分。仅在非安全状态下存在。
       空白地方的单元格表示使用了User模式寄存器。

       每种模式都有15个通用寄存器与之对应,但是在异常模式(FIQ、IRQ、Supervisor、Abort、Undefined)中,每个模式都有自己特有的SP(R13)和LR(R14)寄存器(硬件上),FIQ模式还有自己独立的R8~R12寄存器(硬件上),举个例子,在FIQ模式中,R0的值与非异常模式下R0的值是一样的,是通用的,而FIQ模式下R8的值和非异常模式下R8的值(一般)是不一样的,是独立的,是不通用的,它是FIQ模式专属的。所以通用寄存器总共有31个(如上图红字所表序号,不分先后顺序)。

       User mode:操作系统以用户模式运行应用程序,以限制系统资源的使用。通常应用程序都在用户模式下执行,在用户模式下运行的程序:
       ①仅对系统资源进行非特权访问,即不能访问受保护的系统资源。
       ②只对内存进行非特权访问。
       ③除非引起异常,否则不能更改工作模式。

       System mode:系统模式具有与用户模式相同的寄存器,任何异常都不会进入系统模式。

       Supervisor mode:当复位或软件中断指令执行是会进入这种模式。

       Abort mode:当发生数据存取异常或指令预取异常会进入这种模式。

       Undefined mode:当执行未定义的指令时会进入这种模式。

       FIQ mode:当发生快速中断时会进入这种模式。

       IRQ mode:当发生IRQ中断时会进入这种模式。

       还是这张图,有一个问题就是为什么FIQ模式专属的寄存器比其他模式多?

       FIQ模式的专属寄存器有R8_fiq、R9_fiq、R10_fiq、R11_fiq、R12_fiq、SP_fiq、LR_fiq。
在这里插入图片描述
       答:
       FIQ是快速中断模式,而中断的过程是:保存现场——处理中断——恢复现场。其中保存和恢复现场要保存的东西之一就有被中断模式寄存器,而在进入FIQ中断时,只需保存R0~R7,其他的寄存器可以使用FIQ模式专属的寄存器,所以相对其他中断,FIQ中断所需保存现场和恢复现场的时间相对较少(因为保存和恢复的寄存器少了)。但很可惜,FIQ中断使用的场景并不多。。

       这些工作模式是通过程序状态寄存器(Program Status Registers (PSRs))来判断的,在应用程序下用的是APSR(The Application Program Status Register),在用户模式下用的是CPSR(The Current Program Status Register ),在进入异常模式时,SPSR(The Saved Program Status Registers )会保存进入异常模式之前CPSR的值,异常处理完毕后,会将SPSR的值恢复给CPSR。每个异常模式下都有自己专属的SPSR。

       CPSR和SPSRs的描述:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值