从编程的角度看,arm微处理器的工作状态有两种,并可在两种状态之间切换:
(1)
(2)
在程序运行的过程中,可以在两种状态之间进行相应的转换。处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。
存储器格式(字对齐):
Arm体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。作为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。
存储器格式:
Arm体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。
大端格式:字数据的高字节存储在低地址中,而字数据的低地址存放在高地址中。
小端格式:与大段格式相反。
指令长度:
Arm微处理器的指令长度是32位的,也可以为16位(thumb状态下)。Arm微处理器中支持字节(8位),半字(16位),字(32位)三种数据类型,其中,字需要4字节对齐,半字需要2字节对齐。
注:所谓的指令长度是一条完整的指令的长度,而不是单纯的mov这3个字母长度
Arm工作模式:
Arm微处理器支持7种工作模式,分别为:
1.
用于正常执行程序
2.
用于高速数据传输
3.
用于通常的中断处理
4.
操作系统使用的保护模式(高权限)
5.
当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护
6.
运行均有特权的操作系统任务
7.
当未定义的指令执行时进入该模式,可用于支持硬件
Arm的工作模式切换有两种方法:
被动切换:在arm运行的时候产生一些异常或者中断来经行模式切换
主动切换:通过软件改变,即软件设置寄存器来经行arm的模式切换,应为arm的工作模式都是可以通过相应寄存器的赋值来切换的。
Tips:当处理器运行在用户模式下,某些被保护的系统资源是不能被访问的。
工作模式的分类:
除了用户模式以为,其余所有6种模式称之为非用户模式(特权模式,权限比用户模式高),其中特权模式中除去系统模式外的5种模式称之为异常模式(在用户模式和系统模式看来这些都属于异常),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。