嵌入式系统复习--Thumb指令集

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

上一篇

嵌入式系统复习–ARM指令集(二)

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不同

进入和

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ˇasushiro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值