ARM指令集---cmp、bne、beq
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
比较指令cmp怎么用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)总结:
其实上边两句都是跳转指令,跳转到相关函数处执⾏。区别在于执⾏跳转的条件不同。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。