网上关于arm工作模式及寄存器的资料比较多,百度文库中有一个ppt 讲的比较通俗易懂,见传送门。
本文将主要讨论arm指令中的beq和bnq指令,这俩指令也比较容易搞混。
先看下arm指令的基本格式:
由上面的指令格式,实际上beq可以看做b+eq,bnq可以看做b+nq ,即opcode指令助记符b和cond指令条件的结合。事实上很多指令都可以看做是opcode指令助记符b和cond指令条件的结合,比如ldreq就可以看做ldr+eq。
b指令是跳转指令,使用方法如下:
cond指令条件的详细信息见下表:
上表中,我们会看见很多标志位Z、C、N等,这就涉及到CPSR寄存器了。下表是CPSR状态寄存器中各标示位的详细讲解。
示例解析:
cmp r0, r1
beq run1
如上是beq一个最简单的示例,比较r0和r1寄存器的值,如果相等,则跳转到run1;这时由于r0和r1寄存器的值相等,CPSR状态寄存器的Z=1。
cmp r0, r1
bne run2
如上是bnq一个最简单的示例,比较r0和r1寄存器的值,如果不相等,则跳转到run2;如果r0和r1寄存器的值不相等,CPSR状态寄存器的Z=0。
关键字:arm指令 beq
引用地址:
arm指令之beq和bnq
推荐阅读最新更新时间:2024-11-11 12:49
ARM指令协处理器处理指令
ARM支持16个协处理器,在程序执行过程中,每个协处理器忽略属于ARM处理器和其他协处理器指令,当一个协处理器硬件不能执行属于她的协处理器指令时,就会产生一个未定义的异常中断,在异常中断处理程序中,可以通过软件模拟该硬件的操作,比如,如果系统不包含向量浮点运算器,则可以选择浮点运算软件模拟包来支持向量浮点运算 ARM协处理器指令包括如下三类: 1用于ARM处理器初始化ARM协处理器的数据操作 2:用于ARM处理器的寄存器和ARM协处理器的寄存器间的数据传送操作 3:用于在ARM协处理器的寄存器和内存单元之间传送数据 这些指令包括如下5条 CDP协处理器数据操作指令 LDC协处理器数据读入指令
[单片机]
搞定ARM指令集(二)
一、ARM 微处理器的指令的分类与格式 ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成。ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。下面是ARM微处理器的基本指令。 助记符 指令功能描述 ADC 带进位加法指令 ADD 加法指令 AND 逻辑与指令 B 跳转指令 BIC 位清零指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换的跳转指令 CDP 协处理器数据操作指令 C
[单片机]
ARM指令集----杂项指令
ARM指令集可以分为6类,即是跳转指令,数据处理指令,程序状态传输指令,Load、Store指令,协处理器指令和异常中断指令 跳转指令: 在ARM中有两种方式可以实现程序的跳转,一种是跳转指令,另一种是直接向PC寄存器写入目标地址的值 通过直接向PC寄存器写入目标寄存器的数字可以实现在4GB 地址空间的任意跳转,这种跳转又称为长跳转,如果在残肢令前面使用MOV LR,PC等指令,可以保存返回来的地址值,这样就实现了在4GB空间中的子程序调用 ARM的跳转指令可以从当前指令向前或者是向后的32位的地址进行空间跳转,这类跳转指令有一下4种 B 跳转指令 BL带换回的跳转指令 BLX 带返回的跳转和切换指令 BX 带状态切换的跳
[单片机]