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