上一篇
Thumb指令集概述
在编写Thumb指令时,先要用伪指令CODE16声明(ADS的编译环境下),而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。
Thumb指令集特点:
- 采用16位二进制编码,而ARM指令是32位
- Thumb是压缩指令,先动态解压缩,然后作为标准的ARM指令执行
- 由CPSR的T位决定指令流。T置位,执行Thumb指令流,T清0执行ARM指令流
- Thumb指令集没有协处理器指令、信号量指令、乘加指令、64位乘法指令以及访问CPSR和SPSR的指令,而且指令的第2操作数受到限制
- 除了分支指令B有条件执行功能外,其他指令均无条件执行
- 大多数Thumb数据处理指令采用2地址格式

Thumb指令与ARM指令的异同:
- Thumb中也是采用Load/Store结构,有数据处理、数据传送及流控制指令
- 大多数Thumb指令是无条件执行的(除转移指令B),而所有ARM指令都是条件执行。许多Thumb数据处理指令采用2地址格式,即目的寄存器与源寄存器相同,而大多数ARM数据处理指令采用的是3地址格式
- 所有异常都会返回ARM模式状态,由于ARM微处理器字传送地址必须被4整除(字对准),半字传送地址必须可被2整除(即半字对准),但是Thumb是2个字节,所以进入异常Thumb的自然偏移与ARM不同
进入和

本文详细介绍了Thumb指令集,包括其16位编码特点、数据处理和存储指令、无条件执行特性、与ARM指令的异同,以及转移和异常中断指令。讨论了进入和退出Thumb模式的方法,并举例说明了具体指令的使用。后续将探讨基于ARM的嵌入式程序设计。
1万+

被折叠的 条评论
为什么被折叠?



