一、ARM处理器的两种工作状态:
1、ARM状态:32位,ARM状态执行字对齐的32位ARM指令。
2、Thumb状态,16位,执行半字对齐的16位3、用Bx Rn指令来进行两种状态的切换: 其中Bx是跳转指令,而Rn是寄存器(1个字,32位),如果Rn的位0为1,则进入Thumb状态;如果Rn的位为0,这进入ARM状态。(原 因:ARM指令的后两位始终为0,没有用,而Thumb指令的后一位始终为0,没有用,因此采用位0来表示ARM指令与Thumb指令的切换标志位。)注:1、ARM和Thumb两种状态之间的切换不影响处理器的工作模式和寄存器的内容。
2、ARM处理器在处理异常时,不过处理器处于什么状态,则都将切换到ARM状态。(**********)
二、ARM处理器的7种模式:
1、用户模式
2、系统模式 说明:用户模式与系统模式两者使用相同的寄存器,都没有SPSR(Saved Program Statement Register,已保存程序状态寄存器),但系统模式比用户模式有更高的权限。
3、快中断模式(Fast Interrupt Request)
4、一般中断模式(IRQ)
5、管理模式(Supervisor,SVC) 说明:系统复位或开机时则进入到SVC模式下
6、中止(abort) 说明:当遇到软中断(SWI,Software Interrupt)时,也将进入到SVC模式下
7、未定义(undefine)
说明:1、用户模式外,其它6种模式称为特权模式。所谓特权模式,即具有如下权利:a.MRS(把状态寄存器的内容放到通用寄存 器);b.MSR(把通用寄存器的内容放到状态寄存器中)。由于状态寄存器中的内容不能够改变,因此要先把内容复制到通用寄存器中,然后修改通用寄存器中 的内容,再把通用寄存器中的内容复制给状态寄存器中即可完成“修改状态寄存器”的任务。2、剩下的六种模式中除去系统模式外,统称为异常模式。
ARM处理器的7种工作模式
处理器工作模式 |
说 |
||
用户(user,usr)模式 |
|
正常程序运行模式 |
|
快速中断(FIQ,fiq)模式 |
异常模式 |
特权模式privileged modes |
快速中断处理 |
外部中断(IRQ,irq)模式 |
普通中断处理 |
||
超级用户(supervisor,svc)模式 |
提供操作系统使用的一种保护模式,swi命令状态 |
||
数据访问终止(abort,abt)模式 |
用于虚拟存储和存储保护 |
||
未定义指令终止(undefined,und)模式 |
用于支持通过软件仿真硬件的协处理 |
||
系统(system,sys)模式 |
|
用于运行特权级的操作系统任务 |
三、ARM指令中有37个寄存器,有31个通用寄存器和6个状态寄存器。 原因:系统模式和用户模式共享相同的寄存器。用户、系统模式没有“保存的程序状态寄存器(SPSR)”,而其他5种模式分别有一个对应的“保存的状态寄存 器(SPSR)”,即共五个SPSR,七个模式共用一个“当时程序状态寄存器(CPSR)”,即共六个状态寄存器,还有31个通用寄存器。
ARM处理器各种工作模式下的寄存器
usr模式 |
sys模式 |
svc模式 |
abt模式 |
und模式 |
irq模式 |
fiq模式 |
R0 |