ARM指令格式

本文介绍了ARM指令的基本格式,包括必须项如opcode、条件码cond和寄存器Rd、Rn,以及可选的operand2。强调了条件码的使用可以实现高效的逻辑操作,提高代码效率,并通过示例展示了如何用ARM指令实现条件判断和操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ARM指令基本格式


1.指令的基本格式及说明

ARM是三地址指令格式,指令的基本格式为:

<opcode>  `{<cond>} {s} <Rd>, <Rn> {,<operand2>}

其中<>号内的项是必须的,{}号内的项是可选的。各项说明如下:

opcode: 指令助记符;

cond: 执行条件;

s: 是否影响CPSR寄存器的值;

Rd: 目标寄存器;

Rn: 第一个操作数的寄存器;

operand2: 第二个操作数;

条件码“cond”的使用可以实现高效的逻辑操作(节省跳转和条件语句),提高代码效率。所有的ARM指令都可以条件执行,

而THUMB指令只有B(跳转)指令具有条件执行功能。如果指令不标明条件代码,将默认为无条件(AL)执行。


2.指令的条件域

操作码条件助记符标志含义
0000EQZ = 1相等
0001NEZ = 0不相等
0010CS/HSC = 1无符号数大于或等于
0011CC/LOC = 0无符号数小于
0100MIN = 1负数
0101PLN = 0正数或零
0110VSV = 1溢出
0111VC V = 0没有溢出
1000HIC = 1, Z = 0无符号数大于
1001LSC = 0, Z = 1无符号数小于或等于
1010GEN = V有符号数大于或等于
1011LTN !=  V有符号数小于
1100GTZ=0, N = V有符号数大于
1101LEZ = 1, N != v有符号数小于或等于
1110AL任何无条件执行(指令默认条件)
1111NV任何从不执行(不要使用)

示例:

if( a > b)

{

a++;

}else{

b++;

}

对应的汇编指令实现:

CMP R0, R1 ;R0(a)与R1(b)

ADDHI R0, R0,#1

ADDLS R1,R1,#1



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值