arm汇编之 bne与beq
来源:互联网 发布:python 高斯拟合 编辑:程序博客网 时间:2024/06/05 18:51
在网上看了一些bne和beq的区别,但是对于初学者来说,容易越看越糊涂,因此简单介绍下:
我们先分析CPSR寄存器的Z标识位:
cmp指令可以直接影响CPSR寄存器的Z标识位(条件位),从图中可以看出:比较结果为0时,Z位置1,比较结果为非0时,Z位为0;
再来看一段SDRAM重定位中的子过程(不必纠结于子过程的功能):
// 清bss段,其实就是在链接地址处把bss段全部清零clean_bss:ldr r0, =bss_startldr r1, =bss_endcmp r0, r1// 如果r0等于r1,说明bss段为空,直接下去beq run_on_dram// 清除bss完之后的地址mov r2, #0clear_loop:str r2, [r0], #4// 先将r2中的值放入r0所指向的内存地址(r0中的值作为内存地址),cmp r0, r1// 然后r0 = r0 + 4bne clear_loop
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,可以参考:关于标识位影响
1 0
- arm汇编之 bne与beq
- ARM汇编 beq和bne
- ARM汇编 beq和bne
- ARM汇编 beq和bne
- ARM汇编 beq和bne
- arm汇编指令bne、beq和tst
- ARM汇编指令——TST和BNE、BEQ解析
- BNE 与 BEQ
- ARM汇编 beq和bne %BXX前XXb, %FXX后XXf
- tst、cmp、bne、beq指令
- tst、cmp、bne、beq指令
- 汇编bne的问题
- 按位 BEQ(相等跳转) bne(不相等跳转) 手札
- 汇编 bne 1b和bne 1f浅析
- ARM汇编之循环
- ARM汇编之寄存器
- ARM汇编之寄存器
- ARM汇编之寄存器
- Azure SQL的DTU和eDTU到底是个什么鬼
- c++ 删除向量中重复的元素
- java--foreach,不是jsp里的foreach
- Android面试题(2)
- IAR数据类型
- arm汇编之 bne与beq
- 面向对象C++入门-Hello,World
- Oracle_PL/SQL-游标
- 1_Configure OpenCV3.2 for VS2013
- SSH三大框架的整合+利用Ajax实现无刷新分页
- 【并发编程】concurrent包的Condition使用详解
- 修改Mysql登录密码
- PAT 1055
- 文章标题