arm指令之beq和bnq

网上关于arm工作模式及寄存器的资料比较多,百度文库中有一个ppt 讲的比较通俗易懂,见传送门。

本文将主要讨论arm指令中的beq和bnq指令,这俩指令也比较容易搞混。
先看下arm指令的基本格式:
在这里插入图片描述
由上面的指令格式,实际上beq可以看做b+eq,bnq可以看做b+nq ,即opcode指令助记符b和cond指令条件的结合。事实上很多指令都可以看做是opcode指令助记符b和cond指令条件的结合,比如ldreq就可以看做ldr+eq。
b指令是跳转指令,使用方法如下:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
cond指令条件的详细信息见下表:
在这里插入图片描述
上表中,我们会看见很多标志位Z、C、N等,这就涉及到CPSR寄存器了。下表是CPSR状态寄存器中各标示位的详细讲解。
在这里插入图片描述
示例解析:

	cmp r0, r1			
	beq run1		

如上是beq一个最简单的示例,比较r0和r1寄存器的值,如果相等,则跳转到run1;这时由于r0和r1寄存器的值相等,CPSR状态寄存器的Z=1。

	cmp r0, r1			
	bne run2

如上是bnq一个最简单的示例,比较r0和r1寄存器的值,如果不相等,则跳转到run2;如果r0和r1寄存器的值不相等,CPSR状态寄存器的Z=0。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值