6-3Thumb 指令集(中嵌教育-嵌入式linux开发课件)

时间:2026-01-22

(中嵌教育-嵌入式linux开发课件)

第四章 Thumb 指令集4.1 Thumb 指令集概述 4.2 Thumb 指令详细介绍

http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

4.1 Thumb指令集概述ARM开发工具完全支持Thumb指令,应用程序可以灵 活的将ARM和Thumb子程序混合编程以便在例程的基础 上提高性能或代码密度。在编写Thumb指令时,先要用伪 指令CODE16声明(ADS的编译环境下),而且在ARM指 令中要使用BX指令跳转到Thumb指令,以切换处理器状 态。本节可以分为以下几个部分:

4.1.1 4.1.2 4.1.3 4.1.4

Thumb指令集编码

Thumb状态切换编程模型 Thumb指令集特性http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

4.1.2Thumb状态切换在任何时刻,CPSR的第5位(位T)决定了ARM微处理 器执行的是ARM指令流还是Thumb指令流。当T置1,则认 为是16位的Thumb指令流;当T置0,则认为是32位的ARM 指令流。 进入Thumb模式 进入Thumb指令模式有两种方法:一种是执行一条 交换转移指令BX,另一种方法是利用异常返回,也可以 把微处理器从ARM模式转换为Thumb模式。 退出Thumb模式 退 出 Thumb 指 令 模 式 也 有 两 种 方 法 : 一 种 是 执 行 Thumb 指 令 中 的 交 换 转 移 BX 指 令 可 以 显 式 的 返 回 到 ARM指令流。另一种是利用异常进入ARM指令流 。http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

4.1.3 编程模型Thumb指令集是ARM指令集的一个子集,并只能对限定 的ARM寄存器进行操作。其编程模型如下图所示:r0 r1 r2 r3 r4 r5 r6

Lo寄存器

有阴影的寄存器 访问时受到限制

r7r8 r9 r10 r11 r12 SP(r13) LR(r14) PC(r15)

CPSR Hi寄存器

http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

4.1.4Thumb指令集特点Thumb指令继承了ARM指令集的许多特点Thumb指令也是采用Load/Store结构,有数据处理、数据传 送及流控制指令等。

Thumb指令集丢弃了ARM指令集一些特性大多数Thumb指令是无条件执行的(除了转移指令B),而 所有ARM指令都是条件执行的。许多Thumb数据处理指令采用2 地址格式,即目的寄存器与一个源寄存器相同,而大多数ARM数 据处理指令采用的是3地址格式(除了64位乘法指令外)。

Thumb异常时表现的一些特点所有异常都会使微处理器返回到ARM模式状态,并在ARM 的编程模式中处理。由于ARM微处理器字传送地址必须可被4整 除(即字对准),半字传送地址必须可被2整除(即半字对准)。 而Thumb指令是2个字节长,而不是4个字节,所以,由Thumb执 行状态进入异常时其自然偏移与ARM不同。http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

4.2 Thumb指令集详细介绍16位Thumb指令集是从32位ARM指令集提取指令格 式的,每条Thumb指令有相同处理器模型所对应的32位 ARM指令。 4.2.1 数据处理指令; 4.2.2 转移指令; 4.2.3 Load/Store指令;4.2.4异常中断指令。

http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

4.2.1 Thumb数据处理指令Thumb数据处理指令包括一组高度优化且相 当复杂的指令,范围涵盖

编译器通常需要的大多 数操作。ARM指令支持在单条指令中完成一个 操作数的移位及一个ALU操作,但Thumb指令 集将移位操作和ALU操作分离为不同的指令。本 部分从以下几个方面介绍: 数据处理指令的分类 ARM指令与Thumb指令比较

http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

数据处理指令按照数据处理指令的功能,可以将其分为以下几类: 算术运算指令,它又分为以下几类: ADD与SUB—低寄存器加法和减法 ADD—高或低寄存器

ADD与SUB—SPADD—PC或SP相对偏移 ADC,SBC和MUL

移位和循环移位操作(ASR,LSL,LSR和ROR) 比较指令(CMP和CMN) 传送和取负指令(MOV,MVN和NEG) 测试指令(TST)http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

4.2.2 Thumb转移指令ARM 指 令 有 一 个 大 的 ( 24 位 ) 偏 移 域 ( offset field),这不可能在16位Thumb指令格式中表示。为此 Thumb指令集有多种方法实现其子功能。本部分从以下 几个方面介绍: 转移指令的汇编格式 转移指令的分类

http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

转移指令转移指令的汇编格式如下:B <cond> <label> B <label> BL <label> BLX<label> B{L}X Rm ;格式1 目标为Thumb代码 ;格式2 目标为Thumb代码 ;格式3 目标为Thumb代码 ;格式3a 目标为ARM代码 ;格式4 目标为ARM或Thumb代码

转移链接产生两条格式3指令。格式3指令必须成对出现 而不能单独使用。同样BLX产生一条格式3指令和一条格式 3a指令。汇编器根据当前指令地址、目标指令标识符的地址 以及对流水线行为的微调计算出应插入指令中相应的偏移量。 若转移目标不在寻址范围内则给出错误信息。http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

转移指令转移指令分类如下: B-分支指令,Thumb指令集惟一可条件执 行的指令。 BL-带链接的长分支。 BX-分支指令,并可选择地切换指令集。 BLX-带链接分支,并可选地交换指令集。

http://www.77cn.com.cn

(中嵌教育-嵌入式linux开发课件)

4.2.3数据存取指令Thumb的数据存取指令又可以分为:

单寄存器数据存取指令(LDR和STR) 多寄存器数据存取指令 (LDM和STM)

http://www.77cn.com.cn

(中嵌 …… 此处隐藏:1347字,全部文档内容请下载后查看。喜欢就下载吧 ……

6-3Thumb 指令集(中嵌教育-嵌入式linux开发课件).doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    Copyright © 2023-2025 学科文库 版权所有
    本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
    客服QQ:370150219 邮箱:370150219@qq.com
    苏ICP备16052595号-5

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219