原创 ARM指令集学习笔记

2011-10-13 07:21 2427 6 6 分类: MCU/ 嵌入式


1         ARM汇编指令格式

ARM指令的典型编码格式如下:

31    28

27    25

24    21

20

19    16

15    12

11   8 7  0

cond

xxx

opcode

s

rn

rd

opcode2

ARM指令语法格式如下:

opcode{<cond>}  {s}  rd,  rn, <opcode2>

各个部分解释如下:

u      opcode:指令助记符,如mov

u      cond: 条件码助记符,默认是al(无条件执行)

u      s: 指令的执行是否影响CPSR(当前程序状态寄存器)的值

u      rn: 目标寄存器

u      opcode2: 第二操作数

应用举例:

add   r1, r2, r3

mov  r3, #3

str    r1, [fp, #12]         

下面主要分析条件码和第二操作数。

一、条件码

条件码可以实现高效的分支处理,提高代码效率。

以下为部分条件码:

条件码

助记符

执行条件

含义

0000

eq

Z=1

相等

00001

ne

Z=0

不相等

1110

al

任意

无条件执行

 

二、第二操作数

ARM指令的第二操作数用法比较灵活,有如下几种情况。

u      立即数

u      寄存器

u      寄存器移位

对立即数的解释如下:

立即数的有效位数只有8位(0-7),而另外4位(8-11)所代表的值*2=立即数有效位循环右移的位数。其实,我们也可以认为是将一个8位立即数循环左移(32-右移位数)。比如:0xff, 0x104(1_0000_01000100_0001左移2位,或右移30), 0xff0(可以认为是0xff左移4位或右移28位), 0xff00(可以认为是0xff左移8位或右移24位)。而有些数则不是合法的立即数。比如:0x101,0x102,0xff1,这些数要么首尾相差超过8位,要么只能通过奇数次移位才能得到。我们一般只用到0-0xff

2         数据处理指令

3         存储器访问指令

4         分支指令

5         软中断指令

6         乘法指令

7         协处理器指令

8         指令

这些指令没有太多值得分析的地方,所以就不一一列出来了。

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条