Cortex-A8工作模式和状态

1.Cortex-A8工作模式(8种)

  • 用户模式(usr):正常程序执行模式
  • 系统模式(sys):使用和用户模式相同的寄存器组,用于运行特权级操作系统任务
  • 管理模式(svc):系统复位或软件中断时进入该模式,供操作系统使用的一种保护模式
  • 外部中断模式(irq):优先级中断发生时进入该模式,用于普通的外部中断处理
  • 快速中断模式(fiq):高优先级中断发生时进入该模式,用于高速数据传输和通道处理
  • 数据访问终止模式(abt):当存取异常时进入该模式,用于虚拟存储和存储保护
  • 未定义指令终止模式(und):当执行未定义指令时进入该模式,用于支持硬件协处理器的软件仿真
  • 安全监控模式(mon):可在安全模式和非安全模式下转换

处理器运行模式可以通过软件控制进行切换,也可以通过外部中断或者异常处理过程进行切换。大多数情况下运行在用户模式,应用程序不能访问受操作系统保护的系统资源,也不能直接进行处理器工作模式的切换。需要进行工作模式切换的时候,应用程序可以产生异常处理,在异常处理过程中进行工作模式的切换,由操作系统控制整个系统资源的使用。

除用户模式以外的7种工作模式称为非用户模式,或称为特权模式。特权模式是为了服务中断或异常,访问受保护的资源,具有多系统资源的完全访问权限,可以自由的切换工作状态。

特权模式中除了系统模式以外的6种工作模式又称为异常模式。异常模式除了可以通过程序切换进入外,还可以在特定的异常中断时进入。每一种异常模式都有一组专用的寄存器,以保证在进入异常模式时用户模式下的寄存器不被破坏。

系统模式不能由任何异常进入,他有与用户模式完全相同的寄存器。系统模式供需要访问系统资源的操作系统任务使用,这样避免使用和异常模式相关的寄存器,保证在任何异常发生时都不会使任务的状态不可靠。

2.Cortex-A8工作状态(3种)

Cortex-A8是32位处理器,可执行32位ARM指令集指令,同时兼容16位Thumb指令和数据类型。

有三种工作状态,由程序状态寄存器(CPSR)的T位和J位控制和切换。

  • ARM状态:执行32位字对齐的ARM指令集指令,T和J为0。
  • Thumb状态:执行16位或32位半字对齐的ARM指令集指令,T为1,J为0。
  • ThumbEE状态:执行为动态产生目标而设计的16位或32位半字对齐的Thumb指令级的变体,T和J位为1。

处理器状态的切换:

(1)ARM状态和Thumb状态之间切换

执行BX和BLX指令时,通用寄存器的目标地址的最低位为1切换到Thumb状态,如果在Thumb状态下发生异常,在ARM状态下处理异常后切换回Thumb状态。

执行BX和BLX指令时,通用状态寄存器中目标地址的最低位为0切换到ARM状态。

(2)Thumb状态和ThumbEE状态切换

使用ENTERX指令和LEAVEX指令。

 

B: 跳转。

B   label  满足条件立即跳转到Lable指定的地址执行

BL: 带链接的跳转。 首先将当前指令的下一条指令地址保存在LR寄存器,然后跳转的lable。通常用于调用子程序,可通过在子程序的尾部添加mov  pc, lr 返回。

BX: 带状态切换的跳转。最低位为1时,切换到Thumb指令执行,为0时,解释为ARM指令执行。

BLX:  带链接和状态切换的跳转。结合了BX与BL功能,

 

你可能感兴趣的:(ARM处理器体系结构)