网上关于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。
设计资源 培训 开发板 精华推荐
- 数码管测试-点亮所有段检测好坏
- LT3970IDDB-3.3 5V 降压转换器的典型应用
- LTC3839EUH 演示板,快速瞬态降压型 DC/DC 转换器
- 【课程设计】指针表型燃气报警器 47415Y
- 基于TSC2011的高压双向电流检测放大器评估套件
- 易微联四路开关继电器板
- EVAL-AD9833SDZ,用于评估 AD9833 低功耗 12.65 mW、2.3V 至 5.5V 可编程波形发生器的评估板
- 表面电位计:探测下人体带了多少静电
- LPC54S018-EVK: LPCXpresso54S018开发板
- 使用 Asahi Kasei Microdevices Corporation 的 AK4220VQP 的参考设计