arm汇编之 bne与beq
- 在网上看了一些bne和beq的区别,但是对于初学者来说,容易越看越糊涂,因此简单介绍下:
 - 我们先分析CPSR寄存器的Z标识位:
 
- cmp指令可以直接影响CPSR寄存器的Z标识位(条件位),从图中可以看出:比较结果为0时,Z位置1,比较结果为非0时,Z位为0;
 - 再来看一段SDRAM重定位中的子过程(不必纠结于子过程的功能):
 // 清bss段,其实就是在链接地址处把bss段全部清零
clean_bss:
ldr r0, =bss_start
ldr r1, =bss_end
cmp r0, r1 // 如果r0等于r1,说明bss段为空,直接下去
beq run_on_dram // 清除bss完之后的地址
mov r2, #
clear_loop:
str r2, [r0], # // 先将r2中的值放入r0所指向的内存地址(r0中的值作为内存地址),
cmp r0, r1 // 然后r0 = r0 + 4
bne 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,可以参考:关于标识位影响
 
arm汇编之 bne与beq的更多相关文章
- 关于ARM中的tst、cmp、bne、beq指令
		
一.关于cmp的详细用法 假设现在AX寄存器中的数是0002H,BX寄存器中的数是0003H. 执行的指令是:CMP AX, BX 执行这条指令时,先做用AX中的数减去BX中的数的减法运算. 列出二进 ...
 - ARM 汇编的一些规范
		
A.5.1 文件格式 ARM 源程序文件(即源文件)为文件格式,可以使用任一文本编辑器编写程序代码. 在一个项目中,至少要有一个汇编源文件或C 程序文件,可以有多个汇编 ...
 - ARM 汇编指令
		
ARM汇编程序特点: l 所有运算处理都是发生通用寄存器(一般是R0~R14)的之中.所有存储器空间(如C语言变量的本质就是一个存储器空间上的几个BYTE).的值的处理,都是要传送到通 ...
 - 经常使用ARM汇编指令
		
一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...
 - ARM汇编指令的一些总结-转
		
ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch ...
 - ARM汇编关键知识点总结(转)
		
1.LDR R1, =COUNT 意思是将 COUNT 变量的地址放到 R1中LDR R1, COUNT 意思是将 COUNT 变量地址里面的内容赋给 R1 2. Load-Store 结构——这个应 ...
 - ARM汇编指令特点
		
根据朱有鹏老师课程笔记整理而来: (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串1 0组成的机器码,由CPU读取执行. (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器 ...
 - arm汇编几个经典例题
		
这几个例题来自我们的上机实验,通过这几个例题基本上能掌握arm汇编一些最基本的操作 arm汇编实现1-100的加法 12345678910111213 AREA Example1,CODE,READO ...
 - GNU风格 ARM汇编语法指南
		
汇编源程序一般用于系统最基本的初始化:初始化堆栈指针.设置页表.操作 ARM的协处理器等.这些初始化工作完成后就可以跳转到C代码main函数中执行. 1. GNU汇编语言语句格式 任何Linux汇编 ...
 
随机推荐
- FUNCTIONALITY OF ITEM CATEGORY
			
Item Category Purpose This wiki page will breify discuss about functionality of Item Category in SAP ...
 - Nginx 图片服务器
			
文件服务器:后台如果是集群,每次请求都会到不同的服务器,所以每台服务器的图片文件等都要做同步处理,才能保证每次用户不管访问到哪台服务器都能获取一样的资源.这种做法开销会很大,专门使用 nginx 作为 ...
 - Salesforce 应用生命周期管理
			
应用程序生命周期管理 一个Salesforce系统可以有多个版本,最常见的有: production版本:终端用户实际使用的版本 sandbox版本:沙盒环境,用于开发.测试等 在对Salesforc ...
 - iOS ----------如何修改mac的host文件
			
第一步:前往文件夹 或者 按快捷键组合 Shift+Command+G 三个组合按键. 第二步:前往/private/etc/ 找到Hosts 文件 复制到桌面 修改 然后 保 ...
 - JAVA TestNG单元测试详解
			
TestNG单元测试详解 by:授客 QQ:1033553122 1. 测试环境 2 2. 介绍 2 3. Annotation 2 4. testng.xml 3 4.1. 例1 3 4.2. ...
 - Javascript数组系列四之数组的转换与排序Sort方法
			
今天我们继续来介绍 Javascirpt 数组中的方法,也是数组系列的第四篇文章,因为数组的方法众多,每篇文章我们都对数组的每个方法都有比较细致的描述,只要你能够从中成长一点点,那我们的目的就达到了, ...
 - Java-- String源码分析
			
版权声明:本文为博主原创文章,未经博主允许不得转载 本篇博文基于java8,主要探讨java中的String源码. 首先,将一个类分为几个部分,分别是类定义(继承,实现接口等),全局变量,方法,内部类 ...
 - 新闻思考-阿里进军游戏产业,苹果发力ARM芯片
			
2018.04.03 大家好,这是我开通博客的第一篇文章,我希望在这里分享我的知识,也学习更多的知识,希望大家学习愉快. 阿里进军游戏产业,拿下旅行青蛙的代理权.腾讯一直在进攻阿里的核心业务:电商和支 ...
 - WARNING: Re-reading the partition table failed with error 22: Invalid argument
			
在划分磁盘分区时,遇到错误"WARNING: Re-reading the partition table failed with error 22: Invalid argument&qu ...
 - RAS非对称加密与数字证书数字签名
			
它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么. 我对这些问题的 ...