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)总结:
其实上边两句都是跳转指令,跳转到相关函数处执行。区别在于执行跳转的条件不同。
来源:CSDN
作者:飘渺_星空
链接:https://blog.csdn.net/u011025889/article/details/103616021