ARM指令集---cmp、bne、beq

為{幸葍}努か 提交于 2020-02-05 05:16:44

ARM指令集---cmp、bne、beq

(1)例一:cmp同bne搭配

cmp r1,r2  //这个cmp搭配下边的bne指令构成了如果r1≠r2则执行bne指令,跳转到copy_loop函数处执行。否则,就跳过下边

bne copy_loop//的bne指令向下执行。

	public checkerboard_ram

	section CODE:CODE:NOROOT(2)
    thumb

checkerboard_ram:
	ldr	r1, [r0]	; Backup

	ldr	r2, =0
	str	r2, [r0]
	dsb
	ldr	r3, [r0]
	cmp	r2, r3
	bne	checkerboard_fail

	ldr	r2, =0xffffffff
	str	r2, [r0]
	dsb
	ldr	r3, [r0]
	cmp	r2, r3
	bne	checkerboard_fail

	ldr	r2, =0xaaaaaaaa
	str	r2, [r0]
	dsb
	ldr	r3, [r0]
	cmp	r2, r3
	bne	checkerboard_fail

	ldr	r2, =0x55555555
	str	r2, [r0]
	dsb
	ldr	r3, [r0]
	cmp	r2, r3
	bne	checkerboard_fail

checkerboard_succeed:
	str	r1, [r0]
	dsb
	ldr	r0, =0
	bx	lr

checkerboard_fail:
	str	r1, [r0]
	dsb
	ldr	r0, =0xffffffff
	bx	lr

	end

 

(2)例二:cmp同beq搭配

cmp r0,r1//如果r0=r1,就执行beq,跳转到clean_bss函数处执行,否则跳过beq向下执行。

beq clean_bss

(3)总结:

其实上边两句都是跳转指令,跳转到相关函数处执行。区别在于执行跳转的条件不同。
 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!