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设计多种模式是为了方便操作系统的多种角色安全等级需要。