三、Thumb指令的.pptVIP

  1. 1、本文档共70页,可阅读全部内容。
  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程序;Thumb指令小节目录;Thumb指令小节目录;和ARM指令集相比,Thumb有许多自身的特点: ? 代码尺寸更小,可以节省系统的存储空间; ? 针对的是32位的CPU,比纯16位的指令集效率更高; ? 所使用的编程模型和ARM指令集相似,只要遵循一定的调用规则,Thumb子程序和ARM子程序可以互相调用; ? 为实现16位的指令长度舍弃了ARM指令集的一些特性(大多数为无条件执行/数据处理指令的目的寄存器和其中一个源寄存器相同); ; Thumb指令和ARM指令的区别 ? 在编写Thumb指令时可以使用CODE16声明; ? 除跳转指令B外,其余指令均为无条件执行; ? 数据处理指令: a.采用2地址格式----其中一个寄存器既是源寄存器又是目的寄存器(也是大多数Thumb指令采用的); b.Thumb状态下数据处理指令访问R8-R15会受到一定限制(只有MOV、ADD和CMP可以); c.使用R0-R7的数据处理指令总是更新条件标志位,访问R8-R15的数据处理指令不能更新条件标志位; ; d.加载和存储指令只能访问R0-R7,且访问普通存储区只能使用LDMIA和STMIA,访问堆栈区只能使用PUSH和POP(堆栈为满递减堆栈); e.Thumb指令集没有协处理器指令、状态寄存器访问指令、乘加指令、64位乘法指令。 f. 分支指令的跳转范围有更多限制; ;问题: 1、什么时候访问R8~R15? 2、什么时候影响条件码标志? ;Thumb指令小节目录;Thumb存储器访问指令;Thumb存储器访问指令;单寄存器访问指令——立即数偏移寻址;单寄存器访问指令——立即数偏移指令编码;单寄存器访问指令——立即数偏移寻址;单寄存器访问指令——寄存器偏移寻址;单寄存器访问指令——寄存器偏移指令编码;单寄存器访问指令——寄存器偏移寻址;单寄存器访问指令——相对偏移寻址;单寄存器访问指令——相对偏移指令编码;单寄存器访问指令——相对偏移寻址;Thumb存储器访问指令;寄存器入栈及出栈指令;寄存器入栈及出栈指令;Thumb存储器访问指令;多寄存器加载/存储指令;多寄存器加载/存储指令;Thumb指令小节目录;Thumb数据处理指令;Thumb数据处理指令——数据传送指令; MOV指令将8位立即数或寄存器传送到目标寄存器中。其指令格式如下:( Rd,Rm可以用R8-R15; 但MOV Rd,#expr时,Rd必须在R0~R7之间);数据传送指令——MOV;数据传送指令——MVN; 应用示例: MVN R1,R2 ; 将R2取反,结果存于R1;数据传送指令——NEG;数据传送指令——NEG;Thumb数据处理指令——算术逻辑运算指令;ADD指令将两个数据相加,结果保存到Rd寄存器中。;ADD指令将两个数据相加,结果保存到Rd寄存器中。;ADD指令将两个数据相加,结果保存到Rd寄存器中。;SUB指令将两个数据相减,结果保存到Rd寄存器中。;SUB指令将两个数据相减,结果保存到Rd寄存器中。; ADC指令将Rm的值相加,再加上CPSR中的C条件标志位,结果保存到Rd寄存器。; SBC指令用寄存器Rd减去Rm,再减去CPSR中的C条件标志位的非,结果保存到Rd寄存器。; MUL乘法指令用寄存器Rd乘以Rm,结果保存到Rd寄存器。; AND指令将寄存器Rd的值与寄存器Rm的值按位作逻辑“与”操作,结果保存到Rd寄存器中。; ORR指令将寄存器Rd的值与寄存器Rn的值按位作逻辑“或”操作,结果保存到Rd寄存器中。; EOR指令将寄存器Rd的值与寄存器Rn的值按位作逻辑“异或”操作,结果保存到Rd寄存器中。; BIC指令将寄存器Rd的值与寄存器Rm的值的反码作逻辑“与”操作,结果保存到Rd寄存器中。; ASR指令将数据算术右移,将符号位拷贝到左侧空出的位,移位结果保存到Rd寄存器中。; ASR指令将数据算术右移,将符号位拷贝到左侧空出的位,移位结果保存到Rd寄存器中。; LSL指令将数据逻辑左移,空位清零,移位结果保存到Rd寄存器中。; LSL指令将数据逻辑左移,空位清零,移位结果保存到Rd寄存器中。; LSR指令将数据逻辑右移,空位清零,移位结果保存到Rd寄存器中。; LSR指令将数据逻辑右移,空位清零,移位结果保存到Rd寄存器中。; R

文档评论(0)

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

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

1亿VIP精品文档

相关文档