第四章 Thumb 指令集.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 Thumb 指令集 4.1 Thumb 指令集概述 4.2 Thumb 指令详细介绍 4.1 Thumb指令集概述 ARM开发工具完全支持Thumb指令,应用程序可以灵活的将ARM和Thumb子程序混合编程以便在例程的基础上提高性能或代码密度。在编写Thumb指令时,先要用伪指令CODE16声明(ADS的编译环境下),而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。本节可以分为以下几个部分: 4.1.1 Thumb指令集编码 4.1.2 Thumb状态切换 4.1.3 编程模型 4.1.4 Thumb指令集特性 4.1.1Thumb指令集编码 Thumb指令集编码如下: 4.1.2Thumb状态切换 在任何时刻,CPSR的第5位(位T)决定了ARM微处理器执行的是ARM指令流还是Thumb指令流。当T置1,则认为是16位的Thumb指令流;当T置0,则认为是32位的ARM指令流。 进入Thumb模式 进入Thumb指令模式有两种方法:一种是执行一条交换转移指令BX,将指令中的目标地址寄存器的最低位置1,并将其他位的值放入PC,则可进入Thumb指令.如:BX R0. 另一种方法是利用异常返回,也可以把微处理器从ARM模式转换为Thumb模式。在这个过程中,ARM提供了2种机制:当返回地址保存在当前异常模式的R14中,采用传送指令;当返回地址保存在堆栈时,使用多寄存器加载/存储指令. 如:MOV PC,R14 STMFD SP!,{registers,LR} LDMFD SP!,{registers,PC} 退出Thumb模式 退出Thumb指令模式也有两种方法:一种是执行Thumb指令中的交换转移BX指令可以显式的返回到ARM指令流。另一种是利用异常进入ARM指令流 。 4.1.3编程模型 Thumb指令集是ARM指令集的一个子集,并只能对限定的ARM寄存器进行操作。其编程模型如下图所示: 编程模型 说明: 1、Thumb指令集低8个通用寄存器具有全部访问的权限,对寄存器R13-R15进行扩展作为特殊应用。 2、CPSR的条件标志位由算术和逻辑操作设置并控制转移。 3、图中R8-R12访问受到限制。除MOV或者ADD指令访问寄存器R8-R15外,数据处理指令总是更新CPSR中的ALU状态标志。除CMP指令外,访问寄存器R8-R15的Thumb数据处理指令不能更新标志。 4.1.4 Thumb指令集特点 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不同。 4.2 Thumb指令集详细介绍 16位Thumb指令集是从32位ARM指令集提取指令格式的,每条Thumb指令有相同处理器模型所对应的32位ARM指令。 4.2.1 数据处理指令; 4.2.2 转移指令; 4.2.3 Load/Store指令; 4.2.4 异常中断指令。 4.2.1 Thumb数据处理指令 Thumb数据处理指令包括一组高度优化且相当复杂的指令,范围涵盖编译器通常需要的大多数操作。ARM指令支持在单条指令中完成一个操作数的移位及一个ALU操作,但Thumb指令集将移位操作和ALU操作分离为不同的指令。本部分从以下几个方面介绍: 数据处理指令的二进制编码 数据处理指令的分类 ARM指令与Thumb指令比较 数据处理指令 数据处理指令的二进制编码如下图: 数据处理指令 按照数据处理指令的功能,可以将其分为以下几类: 算术运算指令,它又分为以下几类: 移位和循环移位操作(ASR,LSL,LSR和ROR) 比较指令(CMP和CMN) 传送和取负指令(MOV,MVN和NEG) 测试指令(TST) 数据处理指令 ARM指令与Thumb指令低寄存器比较: 数据处理指令 ARM指令与Th

文档评论(0)

awang118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档