三、Thumb指令.ppt

三、Thumb指令.ppt

ID:48191852

大小:743.50 KB

页数:70页

时间:2020-01-18

三、Thumb指令.ppt_第1页
三、Thumb指令.ppt_第2页
三、Thumb指令.ppt_第3页
三、Thumb指令.ppt_第4页
三、Thumb指令.ppt_第5页
资源描述:

《三、Thumb指令.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Thumb指令Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出的,具有16位的代码密度。Thumb指令体系不完整,只支持通用功能。必要时仍需要使用ARM指令,如进入异常时。简单的Thumb程序;功能:使用BX指令切换处理器状态AREAExample8,CODE,READONLYENTRYCODE32ARM_CODEADRR0,THUMB_CODE+1BXR0;跳转并切换处理器状态CODE16THUMB_CODEMOVR0,#10;R0=10MOVR1,#20;R1=20ADDR0,R1;R0=R0+R1B.END在Thumb程序段之前要用CODE

2、16声明。Thumb指令小节目录1.Thumb指令集与ARM指令集的区别2.存储器访问指令3.数据处理指令4.分支指令5.杂项指令6.伪指令Thumb指令小节目录1.Thumb指令集与ARM指令集的区别2.存储器访问指令3.数据处理指令4.分支指令5.杂项指令6.伪指令和ARM指令集相比,Thumb有许多自身的特点:•代码尺寸更小,可以节省系统的存储空间;•针对的是32位的CPU,比纯16位的指令集效率更高;•所使用的编程模型和ARM指令集相似,只要遵循一定的调用规则,Thumb子程序和ARM子程序可以互相调用;•为实现16位的指令长度舍弃了ARM指令集的一些特性(大多数

3、为无条件执行/数据处理指令的目的寄存器和其中一个源寄存器相同);Thumb指令和ARM指令的区别•在编写Thumb指令时可以使用CODE16声明;•除跳转指令B外,其余指令均为无条件执行;•数据处理指令:a.采用2地址格式----其中一个寄存器既是源寄存器又是目的寄存器(也是大多数Thumb指令采用的);b.Thumb状态下数据处理指令访问R8-R15会受到一定限制(只有MOV、ADD和CMP可以);c.使用R0-R7的数据处理指令总是更新条件标志位,访问R8-R15的数据处理指令不能更新条件标志位;d.加载和存储指令只能访问R0-R7,且访问普通存储区只能使用LDMIA

4、和STMIA,访问堆栈区只能使用PUSH和POP(堆栈为满递减堆栈);e.Thumb指令集没有协处理器指令、状态寄存器访问指令、乘加指令、64位乘法指令。f.分支指令的跳转范围有更多限制;问题:1、什么时候访问R8~R15?2、什么时候影响条件码标志?Thumb指令小节目录1.Thumb指令集与ARM指令集的区别2.存储器访问指令3.数据处理指令4.分支指令5.杂项指令6.伪指令Thumb存储器访问指令助记符说明操作影响标志LDR/STRRd,addressing加载/存储字数据Rd←[Rn,#immed_5×4],Rd、Rn为R0~R7无LDRH/STRHRd,addr

5、essing加载/存储无符号半字数据Rd←[Rn,#immed_5×2],Rd、Rn为R0~R7无LDRB/STRBRd,addressing加载/存储无符号字节数据Rd←[Rn,#immed_5×1],Rd、Rn为R0~R7无LDRSHRd,addressing加载有符号半字数据Rd←[Rn,Rm],Rd、Rn、Rm为R0~R7无LDRSBRd,addressing加载有符号字节数据Rd←[Rn,Rm],Rd、Rn、Rm为R0~R7无单寄存器访问指令Thumb存储器访问指令LDR和STR——加载/存储指令根据指令的寻址方式不同,可以分为以下三类:立即数偏移寻址;寄存器偏

6、移寻址;PC或SP相对偏移寻址;单寄存器访问指令——立即数偏移寻址以这种寻址方式对存储器访问时,存储器的地址以一个寄存器的内容为基址,在偏移一个立即数后指明。指令格式如下:LDRRd,[Rn,#immed_5×4];加载内存中的字数据到寄存器Rd中STRRd,[Rn,#immed_5×4];将Rd中的字数据存储到指定地址的内存中LDRHRd,[Rn,#immed_5×2];加载内存中的半字数据到寄存器Rd的低16位中STRHRd,[Rn,#immed_5×2];存储Rd中的低16位半字数据到指定的内存单元LDRBRd,[Rn,#immed_5×1];加载内存中的字节数据到

7、寄存器Rd中STRBRd,[Rn,#immed_5×1];存储Rd中的低8位字节数据到指定的内存单元其中:Rd表示加载或存储的寄存器。必须为R0~R7。Rn表示基址寄存器。必须为R0~R7。immed_5×N表示立即数偏移量,其取值范围为(0~31)×N。单寄存器访问指令——立即数偏移指令编码指令执行的条件码:0110b:LDR/STR指令;1000b:LDRH/STRH指令;0111b:LDRB/STRB指令;L用于区别加载(L为1)或存储(L为0)Immed_5:5位无符号立即数偏移Rn:基址寄存器Rd:源或目标寄存器单寄

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。