- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六讲 Thumb指令介绍 Thumb指令介绍 Thumb指令集概述 Thumb指令详细介绍 4.1 Thumb指令集概述 Thumb指令集是针对代码密度的问题而提出的。可以看作是ARM指令集的子集。 Thumb是一个不完整的体系结构,不能指望处理器只执行Thumb代码而不支持ARM指令集。一般Thumb代码只需支持通用功能,必要时可以借助ARM指令集. 应用程序可以灵活的将ARM和Thumb子程序混合编程以便在例程的基础上提高性能或代码密度。 ARM开发工具完全支持Thumb指令 Thumb指令集概述 本节可以分为以下几个部分: Thumb指令集编码 Thumb状态切换 Thumb的编程模型 Thumb指令集特性 Thumb指令集编码 Thumb指令集编码如下: Thumb状态切换 在任何时刻,CPSR的第5位(位T)决定了ARM微处理器执行的是ARM指令流还是Thumb指令流。当T置1,则认为是16位的Thumb指令流;当T置0,则认为是32位的ARM指令流。 进入Thumb模式 进入Thumb指令模式有两种方法:一种是执行一条交换转移指令BX,将指令中的目标地址寄存器的最低位置1;另一种方法是利用异常返回,也可以把微处理器从ARM模式转换为Thumb模式。 退出Thumb模式 退出Thumb指令模式也有两种方法:一种是执行Thumb指令中的交换转移BX指令可以显式的返回到ARM指令流;另一种是利用异常进入ARM指令流 ,因为异常总是在ARM模式下进行。 Thumb编程模型 Thumb指令集是ARM指令集的一个子集,并只能对限定的ARM寄存器进行操作。其编程模型如下图所示: Thumb指令集特点 Thumb指令采用16位二进制编码,而ARM指令是32位的。 Thumb指令也是采用Load/Store结构,有数据处理、数据传送及流控制指令等。 大多数Thumb指令是无条件执行的(除了转移指令B),而所有ARM指令都是条件执行的。 许多Thumb数据处理指令采用2地址格式,即目的寄存器与一个源寄存器相同,而大多数ARM数据处理指令采用的是3地址格式(除了64位乘法指令外)。 Thumb指令集没有协处理器指令、信号量(semaphore)指令、乘加指令、64位乘法指令以及访问CPSR或SPSR的指令,而且指令的第二操作数受到限制。 4.2 Thumb指令集详细介绍 16位Thumb指令集是从32位ARM指令集提取指令格式的,每条Thumb指令有相同处理器模型所对应的32位ARM指令。根据完成的功能Thumb指令可以分为4类: 数据处理指令; 转移指令; Load/Store指令; 异常中断指令。 一、数据处理指令 Thumb数据处理指令包括一组高度优化且相当复杂的指令,范围涵盖编译器通常需要的大多数操作。ARM指令支持在单条指令中完成一个操作数的移位及一个ALU操作,但Thumb指令集将移位操作和ALU操作分离为不同的指令,所以在Thumb指令中存在移位操作。 本部分从以下几个方面介绍: 数据处理指令的二进制编码 数据处理指令的分类 ARM指令与Thumb指令比较 数据处理指令-二进制编码 数据处理指令的二进制编码如下图: 数据处理指令-指令格式 格式: op Rd,Rn,Rm op Rd,Rn,#expr3 op Rd,#expr8 其中: Rd 目的寄存器。它也用做“op Rd,#expr8”的第一个操作数。 Rn 第一操作数寄存器。 Rm 第二操作数寄存器。 expr3 表达式或3位立即数,为取值在-7~+7范围内的整数。 expr8 表达式或8位立即数,为取值在-255~+255范围内的整数。 数据处理指令-分类 按照数据处理指令的功能,可以将其分为以下几类: 算术运算指令,它又分为以下几类: 移位和循环移位操作(ASR,LSL,LSR和ROR) 比较指令(CMP和CMN) 传送和取负指令(MOV,MVN和NEG) 测试指令(TST) ARM指令与Thumb指令低寄存器比较: ARM指令与Thumb指令高寄存器比较: 二、Thumb转移指令 ARM指令有一个大的(24位)偏移域(offset field),这不可能在16位Thumb指令格式中表示。为此Thumb指令集有多种方法实现其子功能。本部分从以下几个方面介绍: 转移指令的二进制编码 转移指令的汇编格式 转移指令的分类 转移指令-二进制编码 转移指令的二进制编码如下: 转移指令-汇编格式 转移指令的汇编格式如下: 转移指令的典型用法如下: 1)短距离条件转移指令可用于控制循环的
您可能关注的文档
- 第8章 汇编语言程序设计(第4版).ppt
- 第8章 商品检验、索赔、不可抗力和仲裁.ppt
- 第9章 病人的清洁护理课件.ppt
- 第9章分娩期并发症产妇的护理第四节产后出血患者的护理.ppt
- 第9章企业利润分配的纳税筹划.ppt
- 第10章 争议的预防与处理.ppt
- 第10章 面试技巧与案例分析.ppt
- 第10章 单片机C语言程序设计.ppt
- 第11次面试提问流程案例分析.ppt
- 第11讲 TMS320C54x汇编语言程序设计.ppt
- 2025年四川省宜宾市中考道德与法治真题【含答案、解析】.docx
- 2025年新疆维吾尔自治区、新疆生产建设兵团中考道德与法治真题【含答案、解析】.docx
- 2025年江苏省南京市中考历史真题【含答案解析】.pdf
- 2025年重庆市中考英语真题【含答案解析】.docx
- 2025年四川省宜宾市中考道德与法治真题【含答案解析】.pdf
- C语言程序设计教程(第三版)(微课版)习题答案 王娟勤 第1--10章 简单的C程序设计--- 编译预处理.docx
- C语言程序设计教程(第三版)(微课版)课件 第4章 数组.pptx
- 劳动关系管理 课件 第七章 集体合同管理.pptx
- C语言程序设计教程(第三版)(微课版)课件 第10章 编译预处理.PPT
- Linux操作系统基础任务式教程(慕课版)课件 任务8 SSH服务和Web服务.pptx
文档评论(0)