ARM学习笔记(四)

本文详细介绍了ARM指令集中的跳转指令,包括B、BL、BLX和BX等,并探讨了数据处理指令,如MOV、MVN、ADD、SUB、SBC、RSB、RSC、AND和ORR等,涵盖了它们的语法、操作和使用场景。
摘要由CSDN通过智能技术生成





ARM指令集的概要介绍

ARM指令集的分类

跳转指令

数据处理指令

程序状态寄存器(PSR)传输指令

Load/Store指令

协处理器指令

异常中断产生指令

ARM指令的语法格式

<opcode>[cond][S] <Rd>,<Rn>,<shifter_operand>

其中:

Opcode:指令助记符;

[cond]:可选的指令执行条件;

[S]:决定指令的操作是否影响CPSR的值;

<Rd>:目标寄存器;

<Rn>:表示包含第一个操作数的寄存器;

<shifter_operand>:表示第二个操作数。

ARM指令的编码格式

ARM指令字长固定为32位,一条典型的ARM指令的编码格式如下:

31    28

27    25

24    21

20

19    16

15    12

11     8

7      0

cond

001

opcode

S

Rn

Rd

shifter_operand

 

ARM指令的条件码域

大多数ARM指令都可以根据CPSR中的标志位的值来决定是否执行该指令。ARMV5以前所有指令都是条件执行的,从ARMV5以后引入了一些必须无条件执行的指令。

 

每一条ARM指令可以包含四位的条件码,条件码共有16个,各条件吗的助记符及含义如下:

条件码(cond)

条件码助记符

含义

CPSR中条件标志位的值

0b0000

EQ

相等(Equal)

Z==1(Z set)

0b0001

NQ

Not equal

Z==0(Z clear)

0b0010

CS/HS

Carry Set/unsigned higher or same

无符号数大于/等于

C==1(C set)

0b0011

CC/LO

Carry clear/unsigned lower

无符号数小于

C==0(C clear)

0b0100

MI

Minus/negative(负数)

N==1

0b0101

PL

Plus/positive or zero(非负数)

N==0

0b0110

VS

Overflow(上溢出)

V==1

0b0111

VC

No overflow(没有上溢出)

V==0

0b1000

HI

Unsigned higer(无符号数大于)

C==1 and Z==0

0b1001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值