ARM(Advanced RISC Machines) 是一种基于RISC架构的高性能处理器。
目录
1.ARM的功能特点
- 芯片体积小,功耗低,制造成本低,性能优异
- 支持Thumb(16位)和ARM(32位)两种指令集
- 采用RISC架构,内部大量使用寄存器,执行指令速度快
- 大部分指令都是操作寄存器,很少指令访问外部内存
- 采用多级流水线结构处理速度快
- 支持多种寻址方式,数据存取方式灵活
- 指令长度固定,便于编译器操作以及执行指令
2.ARM结构
2.1 ARM体系结构命名方法
命名格式
x1代表支持的指令集
x2代表不支持的指令集,定义如图
举例:
ARMv7TxE 表示ARM第7版本,支持Thumb指令集但是不支持增强DSP指令集
2.2 处理器系列划分
确定ARM体系结构后,可以形成一系列处理器。处理器的命名主要是功能上的差别
命名规则:
x:代表处理器系列
y:代表是否有存储管理
z:代表Cache类型
功能命名列表如下:
举例:
ARM7TDMI:ARM内核第7个版本,支持Thumb指令集,片上调试,快速乘法器,嵌入式ICE调试
ARM920T-S:ARM内核的第9个版本,支持所有功能
2.3 Cortex-M系列
Cortex-M系列处理器包括Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3
Cortex-M4五个子系列,该系列只要针对成本和功耗敏感的应用,例如智能测量,人机接口设备,汽车和工业控制系统
2.4 Cortex-A系列
2.5 Cortex-R系列
3.ARM指令集
指令集是一个微处理器所有指令的集合,每种微处理器都有自己的指令集,ARM指令集使用RISC精简指令集。
精简指令集最大特点是所有指令占用相同的存储空间。ARM处理器支持ARM和Thumb两种指令集:ARM指令集工作在32位模式下,指令长度32b;Thumb指令集工作在16位模式下,长度16b
ARM指令集按照功能分为算术运算指令、逻辑运算指令、分支指令、软件中断和程序数据装载指令
3.1 算术运算指令
算术运算指令用于普通数据计算,常见有ADD、ADC、SUB、SBC
- ADD指令:普通加法运算,可在有符号或无符号数上进行
ADD R0, R1, R2 ;R0 = R1 + R2
ADD R0, R1, #256 ;R0 = R1 + 256
ADD R0, R2, R3, LSL#1 ;R0 = R2 + (R3 << 1)
- ADC指令:用于带进位的加法运算
ADC <DEST>, <OP1>, <OP2> ---> DEST = OP1 + OP2+carry
- SUB指令:普通减法运算
- SBC指令:带借位的减法运算
3.2 逻辑运算指令
- AND指令:逻辑与
与0b0011
- EOR指令:逻辑异或
- MOV指令:两个操作数之间复制数据
3.3分支指令
- B指令:根据设置条件跳转到指定代码地址
3.4 数据传送指令
- 单一数据传送指令
- 多数据传送指令
4.ARM处理器工作模式
ARM微处理器有两种工作状态:Thumb状态和ARM状态,绝大多数指令都市ARM状态下工作。ARM微处理器可以在工作中随时切换状态。切换工作状态不会影响工作模式和寄存器内容。但是ARM体系要求处理器启动处于ARM状态。
ARM微处理器支持7种工作模式,大多数工作模式都是处理外部中断和异常,分类如图:
除用户模式外,其余6种模式都是特权模式,特权模式响应代码由操作系统提供。ARM处理器定义31个通用寄存器和6个状态寄存器,不同工作模式下分配的寄存器不同
5.寻址方式
寻址:根据指令中的地址码找出操作数地址的过程。以下分别介绍7种常见ARM处理器寻址方式。
5.1 立即寻址
5.2 寄存器寻址
5.3 寄存器偏移寻址
把寄存器的值移位得到结果
- ARM支持的移位操作