1.10.ARM的编程模式和7种工作模式

ARM 177浏览

ARM的基本设定:

* ARM采用的是32位架构

* ARM约定:

   - Byte(字节):8bits

   - Halfword(半字):16bits(2 Byte)

   - Word(字):32bits(4 Byte) 

* 大部分ARM core提供

   - ARM指令集(32-bit)

   - Thumb指令集(16-bit)

   - Thumb2指令集(16&32 bit)

* Jazelle cores 提供 java bytecode


ARM处理器的7种工作模式:

   - User:非特权模式,大部分任务执行在这种模式下。

   - FIQ:(Fast interrupt Request 快速中断请求),当一个高优先级(fast)中断产生时将进入这种模式。

   - IRQ:(interrupt request 中断请求),当一个低优先级(normal)中断产生时将进入这种模式。

   - Supervisor:当复位或软中断指令执行时将进入这种模式。

   - Abort:当存取异常时将进入这种模式。

   - Undef:当执行未定义指令时将进入这种工作模式。

  - System:使用和User模式相同指令集的特权模式。


注意:

* 除了User(用户模式)是 Normal(普通模式),其它6种都是Privilege(特权模式)。

* Privilege中除System模式外,其余5种为异常模式。

* 各种模式的切换,可以是程序员通过代码主动切换(通过写CSPR寄存器),也可以是CPU某些情况下自动切换。

* 各种模式下权限和可以访问的寄存器不同。


CPU为什么设计这些模式?

* CPU是硬件,OS是软件。软件的设计要依赖硬件的特性,硬件的设计要考虑软件的需求,便于实现软件特性。

* 操作系统有安全级别要求,因此CPU设计多种模式是为了方便操作系统的多种角色安全等级需要。