Board logo

标题: ARM指令集-ARM指令格式 [打印本页]

作者: look_w    时间: 2017-9-24 15:28     标题: ARM指令集-ARM指令格式

3.1  ARM处理器的指令格式3.1.1  ARM指令集的特点ARM内核属于RISC结构,所以其指令集有着一些独特的特点:指令长度固定,指令格式的种类少,寻址方式简单。由于ARM处理器采用固定长度的32位指令,因此处理器内部硬件设计能够被简化。ARM处理器内部的指令译码采用硬布线逻辑,不使用微程序控制,以减少指令的译码时间,大部分指令可以在一个时钟周期内完成。
ARM处理器的指令按功能可分为七大类:加载/存储指令、数据处理指令、乘法指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常中断指令。
需要特别指出的是,ARM处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。
按照操作数的特点分,ARM指令可以分为无操作数指令、单操作数指令、双操作数指令和三操作数指令。每条指令都由操作码域、条件码域、条件码设置域、目标操作数、第一操作数寄存器和第二操作数组成。
3.1.2  ARM指令的格式每条ARM指令都是32位的,其格式如下:
31   28  27     25 24      21 20  19         16 15        12  11          0
条件码
类别码
操作码
S
目的寄存器
第一操作数
第二操作数
ARM指令助记符表示为:

<opcode> {<cond>} {S} <Rd>, <Rn>, <shift_op2>

每个域的含义如下:
1) <opcode>:操作码域,指令编码的助记符;
2) {<cond>}:条件码域,指令允许执行的条件编码。花括号表示此项可缺省。
ARM指令的一个重要特点是可以条件执行,每条ARM指令的条件码域包含4位条件码,共16种。几乎所有指令均根据CPSR中条件码的状态和指令条件码域的设置有条件的执行。当指令执行条件满足时,指令被执行,否则被忽略。指令条件码及其助记符后缀表示参见表3.1。
每种条件码可用两个字符表示,这两个字符可以作为后缀添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ,表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。

3.1 指令的条件码

条件码
助记符后缀
标 志
含 义
0000
EQ
Z置位
相等
0001
NE
Z清零
不相等
0010
CS
C置位
无符号数大于或等于
0011
CC
C清零
无符号数小于
0100
MI
N置位
负数
0101
PL
N清零
正数或零
0110
VS
V置位
溢出
0111
VC
V清零
未溢出
1000
HI
C置位Z清零
无符号数大于
1001
LS
C清零Z置位
无符号数小于或等于
1010
GE
N等于V
带符号数大于或等于
1011
LT
N不等于V
带符号数小于
1100
GT
Z清零且(N等于V
带符号数大于
1101
LE
Z置位或(N不等于V
带符号数小于或等于
1110
AL
忽略
无条件执行
3) {S}:条件码设置域。这是一个可选项,当在指令中设置{S}域时,指令执行的结果将会影响程序状态寄存器CPSR中相应的状态标志。
例如:
ADD R0R1R2 R1R2的和存放到R0寄存器中,不影响状态寄存器
ADDS R0R1R2 执行加法的同时影响状态寄存器
指令中比较特殊的是CMP指令,它不需要加S后缀就默认地根据计算结构更改程序状态寄存器。
4) <Rd>:目的操作数。ARM指令中的目的操作数总是一个寄存器。如果<Rd>与第一操作数寄存器<Rn>相同,也必须要指明,不能缺省。
5) <Rn>:第一操作数。ARM指令中的第一操作数也必须是个寄存器。
6) <shift_op2>:第二操作数。在第二操作数中可以是寄存器、内存存储单元或者立即数。
由于第二操作数只有12bit,用第二操作数表示立即数时,其取值范围为0~212-1,要表示超出这个范围的立即数,通常要依靠伪指令实现。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0