ARM内核是数据 ( 此处的数据包括指令和数据 ) 总线连接的各个功能单元的
集合:
1. 数据经总线进入处理器核,其中的指令在执行前被指令译码器翻译;
2.ARM采用 load/store 体系结构将要使用的数据加载或移出,数据处理只
能在寄存器里进行;
3. 数据存储在寄存器文件里 ( 一组 32 位的寄存器存储体 ) ,大部分指令认为
寄存器中保存的是 32 位有符号 / 无符号数,故数据从存储器加载至寄存器前符号
扩展硬件会把 8/16 位数转换为 32 位;
4. 典型的 ARM指令通常有 2 个源寄存器 (Rm和 Rn)和 1 个目的寄存器 (Rd) ,
源操作数分别通过内部总线 A 和 B 从寄存器文件中读出 (ARM的一个重要特征是
寄存器 Rm可以选择进入 ALU之前是否先经过桶形移位器预处理,从而计算较大
范围的表达式和地址 ) ;
5.ALU 和 MAC(乘累加单元 ) 通过 A 和 B得到值计算出结果并将其写到寄存器
文件中, ALU还会产生一个地址,该地址被保存到地址寄存器并发送到地址总线
上协助数据的传输 ( 地址加法器自动更新地址寄存器 ) ;
6. 处理器连续执行指令直至异常或中断改变正常的执行流。
二. ARM处理器的工作状态和工作模式
1. 处理器的工作状态
ARM 处理器内核支持 3 种工作状态: ARM状态 (32 位字对齐的指令 ) 、Thumb
状态 (16 位半字对齐的指令 ) 和 Jazelle 状态 (8 位指令集,用来加速 Java 字节码
的执行 ) ,某一时刻处理器只能处于其中的一种状态中。由于 Jazelle 指令集使
用范围专一,故一般情况下只讨论 ARM和 Thumb两种指令集。
两种指令集各具特色, 使用的场合也不同, 同一个程序可以同时包含上述两
种指令集, 因此涉及到二者相互转换的问题。 程序执行过程中, 处理器可通过软
件或异常处理在两种状态之间切换: