Chinaunix首页 | 论坛 | 博客
  • 博客访问: 737442
  • 博文数量: 124
  • 博客积分: 3156
  • 博客等级: 中校
  • 技术积分: 1584
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-02 10:29
文章分类

全部博文(124)

文章存档

2012年(3)

2011年(2)

2010年(61)

2009年(34)

2008年(24)

我的朋友

分类: LINUX

2009-04-29 17:51:25

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

ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来   完成。

ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大类,具体的指令及功能如表2.7所示(表中的指令为基本ARM指令,不包括派生的ARM指令)。

表2.7   ARM 指令及功能描述

助记符

指令功能描述

ADC

带进位加法指令

ADD

加法指令

AND

逻辑与指令

B

跳转指令

BIC

位清零指令

                                                                          续表

助记符

指令功能描述

BL

带返回的跳转指令

BLX

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

BX

带状态切换的跳转指令

CDP

协处理器数据操作指令

CMN

比较反值指令

CMP

比较指令

EOR

异或指令

LDC

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

LDM

加载多个寄存器指令

LDR

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

MCR

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

MLA

乘加运算指令

MOV

数据传送指令

MRC

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

MRS

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

MSR

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

MUL

32 位乘法指令

MLA

32 位乘加指令

MVN

数据取反传送指令

ORR

逻辑或指令

RSB

逆向减法指令

RSC

带借位的逆向减法指令

SBC

带借位减法指令

STC

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

STM

批量内存字写入指令

STR

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

SUB

减法指令

SWI

软件中断指令

SWP

交换指令

TEQ

相等测试指令

TST

位测试指令

2.12.2  指令的条件域

当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。

每一条ARM指令包含4位的条件码,位于指令的最高 4位[31:28]。条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后 缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。

在16种条件标志码中,只有15种可以使用,如表2.8所示,第16种(1111)为系统保留,暂时不能使用。

表2.8  指令的条件码

条件码

助记符后缀

标  志

含  义

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

忽略

无条件执行

      
(转)
阅读(5707) | 评论(0) | 转发(0) |
0

上一篇:ARM 寄存器组织

下一篇:ARM汇编基础

给主人留下些什么吧!~~