ARM的2种状态和7种工作模式

一、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、用户模式

    ARM处理器正常的程序执行状态。非特权模式(其他6种模式为特权模式)

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指令中有37个寄存器,有31个通用寄存器和6个状态寄存器。

    原因:系统模式和用户模式共享相同的寄存器。用户、系统模式没有“保存的程序状态寄存器(SPSR)”,而其他5种模式分别有一个对应的“保存的状态寄存器(SPSR)”,即共五个SPSR,七个模式共用一个“当时程序状态寄存器(CPSR)”,即共六个状态寄存器,还有31个通用寄存器。

你可能感兴趣的:(嵌入式-ARM)