ARM工作模式
1. 工作状态
从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:
1)第一种为ARM状态,此时处理器执行32的字对齐ARM指令,绝大部分工作在此状态;
2)第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。
ARM微处理器有32位的ARM指令集和16位的Thumb指令集,微处理器可以随时在两种工作状态之间切换,
并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。
2. 存储器格式
ARM体系结构将存储器看作从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,
从第四个字节到第七个字节放置第二个存储的字数据,依次排列。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。
ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。
1)大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
2)小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
3. 指令长度
ARM微处理器的指令长度可以是32位(在ARM状态下),也可以为16位(在Thumb状态下)。
ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据结构,
其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)。
4. 工作模式
(1)用户模式(usr , User Mode)。ARM处理器正常的程序执行状态。
(2)快速中断模式(fiq , Fast Interrupt Request Mode)。用于高速数据传输或通道处理。当触发快速中断时进入此模式。
(3)外部中断模式 ( irq , Interrupt Request Mode )。用于通用的中断处理。当触发外部中断时进入此模式。
(4)管理模式 ( svc , Supervisor Mode )。操作系统使用的保护模式。在系统复位或者执行软件中断指令SWI时进入。
(5)数据访问终止模式 ( abt , Abort Mode )。当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
(6)系统模式(sys , System Mode )。运行具有特权的操作系统任务。
(7)未定义指令中止模式 ( und , Undefined Mode )。当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能访问的。
除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);
其中出去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),用于处理中断或异常,以及需要访问受保护的系统资源等情况。