一、概述
Arm芯片具有RISC体系的一般优点,比如:
- 具有大量的寄存器
- 绝大多数操作都在寄存器中进行,通过Load/Store的体系结构在内存和寄存器间传递数据
- 寻址方式简单
- 采用固定长度的指令格式
Arm体系采用了一些特别的技术,在保证高性能的同时尽量减小芯片体积,降低芯片功耗:
- 在同一条数据处理指令中包含算术逻辑处理单元处理和移位处理
- 使用地址自动增加(减少)来优化程序中循环处理
- Load/Store指令可以批量传输数据,从而提高数据传输的效率
- 所有指令都可以根据前面指令执行结果,决定是否执行,以提高指令执行的效率
运行模式:用户模式、系统模式、5种异常模式
通用寄存器:R0~R7 未备份寄存器 R8-R14 备份寄存器 R13通常用作栈指针 R14为连接寄存器 R15为程序计数器PC
状态寄存器:
- CPSR:当前程序状态寄存器,包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。
- SPSR:备份程序状态寄存器,当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容,在异常中断程序退出时,用SPSR中保存的值来恢复CPSR,只有5种异常模式拥有SPSR。
二、指令集
典型的Arm指令语法格式:
<opcode> (<cond>) {s} <Rd>,<Rn>,<shifter_operand>
- opcode:指令助记符
- cond:指令执行的条件
- {s}:决定指令的操作是否影响CPSR的值
- Rd:目标寄存器
- Rn:包含第一个操作数的寄存器
- Shifter_operand:第二个操作数
条件码:EQ相等 NE不相等 LS无符号数小于等于 LT带符号数小于 LE带符号数小于等于 HI无符号数大于 GE带符号数大于等于 GT带符号数大于 VS上溢出 VC没有上溢出 AL无条件执行