Cortex-M3内核的指令系统
生活随笔
收集整理的这篇文章主要介绍了
Cortex-M3内核的指令系统
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 1 Cortex-M3内核的指令系统
- 1.1 指令系统简介
- 1.2 数据传送指令
- 1.3 中断开关指令
- 1.4 条件跳转指令
- 1.5 运算指令
1 Cortex-M3内核的指令系统
1.1 指令系统简介
指令系统简介:
- Cortex-M3使用的是Thumb-2指令集,长度可为16位或者32位。指令可以带后缀,如有条件的执行。示例:CBZ R0, label,如果R0为0,则跳转;否则什么都不做。
典型写法:
指令分类:
- 数据传送指令。
- 数据处理指令。
- 子程序调用及无条件跳转指令。
- 标志位与条件转移指令。
- 饱和运算指令。
- 其它指令。
1.2 数据传送指令
存储器访问:
- LDR/LDRB Rd, =LABEL,加载符合LABEL对应的地址,存储到Rd中。
- LDR/LDRB Rd, [Rs],从Rs寄存器取出地址,读取相应的32位/8位数据,存储到Rd寄存器。
- STR/STRB Rd, [Rs],从Rs寄存器中取出地址,将Rd中的32位/8位数据存储到相应的地址处。
批量存储器访问:
- LDMIA, Rd!, {Rn, ... , Rm},从Rd处连续多次递增地址读取32位数据,存储到后面指令的寄存器列表。
- STMDB, Rd!, {Rn, ... , Rm},从Rd处连续多次递减地址存储32位数据,数据来自后面的寄存器列表。
IA(Increase After)表示在操作完成后递增地址;DB(Decrease Before)表示在操作开始前递减地址。
!操作结束后,将最终的地址保存到Rd寄存器中。
MRS和MSR:
MRS和MSR用于访问xPSR、PSP、MSP等:
- MRS Rn, <SReg>,加载寄存器的值到Rn。
- MSR <SReg>, Rn:存储Rn的值到寄存器中。
1.3 中断开关指令
中断开关:
- CPSID I:关中断。
- CPSIE I:开中断。
1.4 条件跳转指令
无条件跳转:
- BX Rn:移到寄存器reg给出的地址,比如BX LR可用于子程序的返回。
比较条件并跳转:
- CBZ Rn, <label>:如果Rn的寄存器不为0,则跳转到label对应的指令,否则执行下一条指令。
- CBNZ Rn, <label>:如果Rn寄存器值不为0,则跳转到label对应的指令,否则执行下一条指令。
1.5 运算指令
逻辑或操作:
- ORR Rd, Rn, #imm12:Rd = Rn | imm12。
参考资料:
总结
以上是生活随笔为你收集整理的Cortex-M3内核的指令系统的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 电脑变成蓝屏怎么办啊 电脑突然蓝屏怎么办
- 下一篇: 快速了解FAT32文件系统