![943d9e5655b858b4e56565dc9c17a233.png](https://i-blog.csdnimg.cn/blog_migrate/0c9947afd3c1b4c9408288408a20d9a2.jpeg)
ARM指令分类:
1、跳转指令;
2、数据处理指令;
3、程序状态寄存器传输指令;
4、Load/Store指令;
5、协处理器指令;
6、异常中断指令;
ARM指令的一般编码格式如下。
ARM指令字长固定为32bit,典型的ARM指令编码格式如下图所示:
![c6106e8c0005438a27b6638ed174b8e1.png](https://i-blog.csdnimg.cn/blog_migrate/d00b9e35afaffe6d25db19c407e0b9cd.jpeg)
--cond:指令执行的条件编码。
--opcode:指令操作符编码。
--S:决定指令的操作是否影响CPSR的值。
--Rd:目标寄存器编码。
--Rn:包含第一个操作数的寄存器编码。
--shifter_opreand:表示第二个操作数。
一条典型的ARM指令语法格式如下:
{}{S}
参数说明如下:
:是指令助记符,如ADD表示加法运算。
{}:表示指令执行的条件。
{S}:决定指令的操作是否影响CPSR的值。
:表示目标寄存器。
:表示包含第一个操作数的寄存器。
:表示第2个操作数。
ARM指令的条件码域
大部分的ARM指令都是可以又条件的执行,当条件满足时,执行该指令,不满足时,该指令被当作一条空指令NOP,这是处理器进行判断中断请求等操作,然后转到下一条指令。
条件码一共16个,条件码和助记符如下图所示。
![6a0ced2b897ff01cab4e1907ec9762d8.png](https://i-blog.csdnimg.cn/blog_migrate/2e2e336b71ae4ad72c8b5cab92098b39.jpeg)