购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 指令概述

指令是微处理器工作的指示和命令。程序是按一定顺序排列的指令,执行程序的过程是计算机的工作过程。指令集即执行指令的集合,指令集主要分为复杂指令集(简称CISC)和精简指令集(简称“RISC”),复杂指令集的代表是x86 架构,精简指令集的代表是ARM架构。ARM指令集是 32 位的,程序的启动都是从ARM指令集开始的。ARM指令集主要包括指令分类及指令格式、条件执行、指令集编码。

ARM指令属于三地址指令,每条ARM指令占有 4 个字节,其指令长度为 32 位。典型的ARM指令编码格式为:

其中,cond(bit[31∶28])表示指令执行的条件码,见表3.1。

表3.1 指令执行的条件码

type(bit[27∶26])表示指令类型码,根据其编码的不同,所代表的类型也不同,指令类型码描述见表3.2。

表3.2 指令类型码描述

位I(bit[25])表示第二操作数类型标志码。在数据处理指令里I=1 时表示第二操作数为立即数,当I=0 时表示第二操作数是寄存器或寄存器移位形式。

位Opcode(bit[24∶21])表示指令操作码。

位S(bit[20])位决定指令的操作结果是否影响CPSR。

位Rn(bit[19∶16])表示第一个操作数的寄存器编码。

位Rd(bit[15∶12])表示目标寄存器编码。

位Operand2(bit[11∶0])表示指令第二个操作数。

ARM指令使用的基本格式如下:

〈Opcode〉{〈cond〉}{S} 〈Rd〉,〈Rn〉{,〈Operand2〉}

其中,<>是必须项,{}是可选项。

指令格式中的符号说明如下:

①Opcode指操作码,指令助记符,如ADD,STR等。

②cond可选的条件码,执行条件,如EQ,NE等。

③S为可选后缀,若指定“S”,则根据指令执行结果更新CPSR中的条件码。

④Rd表示目标寄存器,Rn表示存放第 1 操作数的寄存器。

⑤Operand2 指第二个操作数。

例如:

ADDS表示将寄存器R0 和R2 的值相加,同时更新程序状态寄存器(APSR)中的标志位,并将结果保存到R4 寄存器中。

在数据处理指令中,第二操作数除了可以是寄存器,还可以是一个立即数。若需要将一个常数加到寄存器,而不是两个寄存器相加,则可以用立即数值取代第二操作数,如下例。立即数用前面加一个“#”的数值常量来表示。

在ARM数据处理指令中,第二操作数还有一种特有的形式,即寄存器移位操作,该操作允许第二个寄存器操作数在同第一操作数运算之前完成移位操作,例如:

ARM的任何数据处理指令都能通过增加“S”操作码来设置条件码(N,Z,C和V),数据处理指令加了“S”后,算术操作(在此包含CMP和CMN)根据算术运算的结果更新程序状态寄存器(CPSR)的标志位。CPSR寄存器的标志位如图3.1 所示。

图3.1 CPSR寄存器的标志位 AwYsCUJzV/Z+VROprvnKrmgbnZMUTd/XI5q0N0xdejFrnvazI5XVRZwp+wHLe5vU

点击中间区域
呼出菜单
上一章
目录
下一章
×