arm汇编之 bne与beq

创建时间:2021/12/29 19:21
更新时间:2021/12/29 20:14
标签:bingo, 汇编, 细节知识


arm汇编之 bne与beq

一些bne和beq的区别,但是对于初学者来说,容易越看越糊涂,因此简单介绍下:
我们先分析CPSR寄存器的Z标识位:

    cmp指令可以直接影响CPSR寄存器的Z标识位(条件位),从图中可以看出:比较结果为0时,Z位置1,比较结果为非0时,Z位为0;
再来看一段SDRAM重定位中的子过程(不必纠结于子过程的功能):
beq:
“beq run_on_dram” 如果 r0 - r1 = 0 ,程序跳转到run_on_dram处,再向下执行,此时CPSR的Z标识位为1,我们可以理解为:cmp的结果为0,或者CPSR的Z标识位为1时,程序跳转到beq 后的标签处;
bne:
“bne clear_loop”  如果 r0 - r1  != 0 ,程序跳转到clear_loop处,再向下执行,此时CPSR的Z标识位为0,我们可以理解为:cmp的结果为1,或者CPSR的Z标识位为0时,程序跳转到bne 后的标签处;
对于CPSR寄存器的条件位的 N Z C V,可以参考:关于标识位影响
Measure
Measure