嵌入式系统教学课件:33thumb指令集.pptVIP

嵌入式系统教学课件:33thumb指令集.ppt

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Thumb指令集 (一)Thumb指令集特点 Thumb指令集是ARM指令集压缩形式的子集,所有Thumb指令均有对应的ARM指令。 采用16位二进制编码,代码密度小。 执行Thumb指令时,先动态解压缩,然后作为标准的ARM指令执行。 如何区分指令流取决于CPSR的第5位(位T)。 大多数Thumb数据处理指令采用2地址格式。 由于16位的限制,移位操作变成单独指令。 Thumb指令集没有协处理器指令、单寄存器交换指令、乘加指令、64位乘法指令以及程序状态寄存器处理指令,而且指令的第2操作数受到限制。 除了分支指令B有条件执行功能外,其他指令均为无条件执行。 Thumb是一个不完整的体系结构,不能指望处理器只执行Thumb代码而不支持ARM指令集。 (二)状态切换 1、ARM状态进入Thumb状态的方法 执行带状态切换的转移指令BX。若BX指令指定的寄存器的最低位为1,则将T置位,并将程序计数器切换为寄存器其他位给出的地址。 BX R0 ;若R0最低位为1,则转入Thumb状态 异常返回也可以将微处理器从ARM状态转换为Thumb状态。通常这种指令用于返回到进入异常前所执行的指令流,而不是特地用于转换到Thumb模式。 MOV PC,LR ;当返回地址保存在LR时 STMFD SP!,{registers,LR} ;当返回地址保存在堆栈时,进 入异常后将R14入栈,假设异常 前执行的是Thumb指令,PC保存 于LR中 …… …… ; LDMFD SP!,{registers,PC} ;返回指令 2、 Thumb状态进入ARM状态的方法 执行Thumb指令中的交换转移BX指令可以显式地返回到ARM指令流。 利用异常进入ARM指令流。 (三)Thumb指令寄存器的使用 Thumb-ARM相似处: Load/Store结构。 支持8位字节、16位半字和32位字数据类型,半字以两字节边界对准,字以4字节边界对准。 Thumb-ARM差异处: 大多数Thumb指令是无条件执行的,所有ARM指令都是条件执行的。 许多Thumb数据处理指令采用2地址格式(目的寄存器与一个源寄存器相同),ARM数据处理指令大多采用3地址格式。 ADD R0,R1 由于采用高密度编码,Thumb指令格式没有ARM指令格式规则。 (四)Thumb转移指令 Thumb转移指令用于: 向后转移形成循环; 条件结构向前转移; 转向子程序; 处理器从Thumb状态切换到ARM状态。 程序相对转移,特别是条件转移与在ARM状态下相比,在范围上有更多的限制,转向子程序只能是无条件转移。 Thumb转移指令包括:B;BL;BX;BLX ①B指令——目标为Thumb代码 格式1:B 条件码 Label Lable:程序相对偏移表达式,多为同一代码块中的地址标号。 编码结构:-256~+256 格式2:B Label 编码结构:±2KB ②BL指令——目标为Thumb代码 格式:BL Label 编码结构: ±4M ③BX指令——目标为Thumb代码或ARM代码 格式: BX Rm 编码结构: ④BLX指令 格式1:BLX Label ——目标为ARM代码 (五)堆栈指令 功能:低寄存器和可选的LR进栈。低寄存器和可选的PC出栈。 格式: POP { Reglist { , PC}} PUSH { Reglist { , LR}} 其中:Reglist 低寄存器范围的、用逗号隔开的列表。 注释: 1.Thumb堆栈是满递减堆栈,向下增长,且SP指向堆栈的最后入口。 2.寄存器以数字顺序存储在堆栈中。最低数字的寄存器其地址最低。 3.POP{reglist,PC}这条指令引起处理器转移到从堆栈弹出给PC的地址。这通常是从子程序返回,其中LR在子程序开头压进堆栈。 4.指令采用基址回写,因此基址寄存器不应出现在 寄存器列表中。 条件码标志 这些指令不影响条件码标志 例: PUSH {R0,R4-R7} ;R0、R4~R7进栈 PUSH {R0,LR} POP {R2,R5} POP {R0-R7,PC} ;出栈并从子程序返回 (六)寄存器读取和存储指令 单寄存器读取和存储 Thumb单寄存器传送类指令是ARM单寄存器传送类指令的一个子集,和ARM有相同的指令格式。 多寄存器读取和存储指令 Thumb多寄存器传送类指令和ARM有相同的指令格式

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档