2024年6月4日发(作者:)

ARM微处理器的指令系统

ARM微处理器的指令系统

介绍ARM指令集、Thumb指令集,以及各类指令对应的寻址方

式,通过对本章的阅读,希望读者能了解ARM微处理器所支持的指令

集及具体的使用方法。

本章的主要内容有:

- ARM指令集、Thumb指令集概述。

- ARM指令集的分类与具体应用。

- Thumb指令集简介及应用场合。

3.1 ARM微处理器的指令集概述

3.1.1 ARM微处理器的指令的分类与格式

ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理

寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器

的访问则需要通过专门的加载/存储指令来完成。

ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序

状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常

产生指令六大类,具体的指令及功能如表3-1所示(表中指令为基本

ARM指令,不包括派生的ARM指令)。

表3-1 ARM指令及功能描述

助记符

ADC

ADD

AND

B

BIC

BL

BLX

BX

CDP

CMN

CMP

EOR

指令功能描述

带进位加法指令

加法指令

逻辑与指令

跳转指令

位清零指令

带返回的跳转指令

带返回和状态切换的跳转指令

带状态切换的跳转指令

协处理器数据操作指令

比较反值指令

比较指令

异或指令

LDC

LDM

LDR

MCR

MLA

MOV

MRC

MRS

MSR

MUL

MLA

MVN

ORR

RSB

RSC

SBC

STC

STM

STR

SUB

SWI

SWP

TEQ

TST

存储器到协处理器的数据传输指令

加载多个寄存器指令

存储器到寄存器的数据传输指令

从ARM寄存器到协处理器寄存器的数据传输指令

乘加运算指令

数据传送指令

从协处理器寄存器到ARM寄存器的数据传输指令

传送CPSR或SPSR的内容到通用寄存器指令

传送通用寄存器到CPSR或SPSR的指令

32位乘法指令

32位乘加指令

数据取反传送指令

逻辑或指令

逆向减法指令

带借位的逆向减法指令

带借位减法指令

协处理器寄存器写入存储器指令

批量内存字写入指令

寄存器到存储器的数据传输指令

减法指令

软件中断指令

交换指令

相等测试指令

位测试指令

3.1.2 指令的条件域

当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条

件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,

指令被执行,否则指令被忽略。

每一条ARM指令包含4位的条件码,位于指令的最高4位[31:28]。

条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添

加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上

后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位

时发生跳转。

在16种条件标志码中,只有15种可以使用,如表3-2所示,第

16种(1111)为系统保留,暂时不能使用。

表3-2 指令的条件码