收藏 分享(赏)

第5章 Thumb指令.ppt

上传人:a****2 文档编号:3452418 上传时间:2024-05-08 格式:PPT 页数:32 大小:268KB
下载 相关 举报
第5章 Thumb指令.ppt_第1页
第1页 / 共32页
第5章 Thumb指令.ppt_第2页
第2页 / 共32页
第5章 Thumb指令.ppt_第3页
第3页 / 共32页
第5章 Thumb指令.ppt_第4页
第4页 / 共32页
第5章 Thumb指令.ppt_第5页
第5页 / 共32页
第5章 Thumb指令.ppt_第6页
第6页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第5章Thumb指令,在ARM体系结构中,ARM指令是32位的,具有很高的执行效率。但是对于嵌入式设备而言,其存储空间极其有限,对于每条ARM指令都要占用4个字节,对存储空间的要求较高。为了压缩代码的存储,增加代码存储密度,ARM公司设计了16位的Thumb指令。,内容提要,51 Thumb数据处理指令52 Thumb存储器操作指令53 Thumb分支指令54 Thumb软中断指令55 Thumb指令功能码段分析,51 Thumb数据处理指令,Thumb数据处理指令可以分为5类:数据传送指令、算术运算指令、逻辑运算指令、移位操作指令和比较指令。,5.1.1 寄存器移位指令,opcode Rd,

2、Rs,#shift_immed_5Rd目标寄存器;Rs源操作数寄存器;shift_immed_5寄存器移位的数值,取值范围为031;,Thumb寄存器移位指令操作码编码,5.1.2 低位寄存器算术运算指令,1加法与减法运算指令(形式上为3个操作数)这类指令的汇编语法格式为opcode Rd,Rs,Rmopcode Rd,Rs,#immed_3opcode:ADD、SUB,2MOV、CMP、ADD与SUB指令(对R0R7操作)opcode Rd,#immed_8两个操作数,分别为R和一个8位立即数。,5.1.2 低位寄存器算术运算指令,5.1.3 ALU操作指令,这类指令的汇编语法格式为opco

3、de Rd,Rs;(两个操作数都为R)操作码分为4类:逻辑操作:AND、ORR、MVN、EOR、BIC移位操作:LSL、LSR、ASR、ROR算术运算:ADC、SBC、MUL、NEG比较运算:TST、CMP、CMN,5.1.4 带高位寄存器操作的Thumb指令,这类指令的汇编语法格式为opcode Rd,Hsopcode Hd,Rsopcode Hd,Hsopcode:ADD、CMP、MOV,5.1.5 带SP/PC的算术运算指令,1SP/PC加法运算指令这类指令的汇编语法格式为ADD Rd,PC,#immed_8 4ADD Rd,SP,#immed_8 4,2SP加法/减法运算指令这类指令的

4、汇编语法格式为ADD SP,#immed_7 4SUB SP,#immed_7 4,5.1.5 带SP/PC的算术运算指令,5.2 Thumb存储器操作指令,Thumb存储器操作指令包括无符号字节、半字和字数据的存储与加载,多寄存器的加载与存储指令和栈操作指令。,5.2.1 字节、半字和字的加载/存储指令,1.立即数偏移量的加载/存储指令LDRB Rd,Rn,#immed_5 4STRB Rd,Rn,#immed_5 4,2.寄存器偏移量的加载/存储指令LDRB Rd,Rn,RmSTRB Rd,Rn,Rm,5.2.1 字节、半字和字的加载/存储指令,3.有符号字节/半字的加载/存储指令LDRH

5、 Rd,Rn,RmSTRH Rd,Rn,RmLDRSB Rd,Rn,RmLDRSH Rd,Rn,Rm,5.2.1 字节、半字和字的加载/存储指令,4.偏移量为立即数的半字加载/存储指令LDRH Rd,Rn,#immed_5 2STRH Rd,Rn,#immed_5 2,5.2.1 字节、半字和字的加载/存储指令,5.PC作为基址寄存器的字加载指令LDR Rd,PC,#immed_84,5.2.1 字节、半字和字的加载/存储指令,6.SP作为基址寄存器的加载/存储指令LDR Rd,SP,#immed_84STR Rd,SP,#immed_84,5.2.1 字节、半字和字的加载/存储指令,5.2.

6、2 批量加载/存储指令,1.寄存器入栈出栈指令 堆栈地址由SP设置,堆栈是满递减类型。PUSH reglistPOP reglistPUSH reglist,LRPOP reglist,PC,2.多寄存器加载/存储指令只使用后增的形式(IA),针对低位寄存器操作。LDMIARn!reglistSTMIARn!reglist,5.2.2 批量加载/存储指令,5.3 Thumb分支指令,与ARM指令一样,在Thumb指令集中,也有相应的分支指令实现程序的跳转和子程序的调用。Thumb分支指令可分为B分支指令、带链接的分支指令和带状态切换的分支指令。,5.3.1 B分支指令,1.条件分支指令 Bco

7、ndlabelsigned_immed_8:8位有符号立即数,由汇编语法格式中的label右移一位得到(相对转移)。,2.无条件分支指令Blabelsigned_immed_11:11位有符号立即数,由汇编语法格式中的label右移一位得到,可以跳转+/-2048字节范围。,5.3.1 B分支指令,5.3.2 带链接的分支指令,带链接的分支指令BL将下一条指令的地址拷贝到R14(即LR)链接寄存器中,然后跳转到指定的地址运行程序。BL label,带状态切换的分支指令,带状态切换的分支指令的汇编语法格式为BX RsBX Hs,5.4 Thumb软中断指令,Thumb软中断指令SWI与ARM指令

8、集下的软中断指令相似,用于使处理器产生软件异常,使用这种机制实现在用户模式下对操作系统中特权模式的程序调用。语法格式:SWIimmed_8编码格式:,注意事项:进行SWI软中断时,处理器切换到ARM状态,并处于管理模式,CPSR保存到SPSR_svc中,返回地址保存到LR_svc中,程序跳转到0 x08处。在执行SWI时,immed_8被处理器忽略,但在中断服务程序中,用它来确定所请求的服务号。SWI指令执行不影响条件状态位。,5.4 Thumb软中断指令,5.5 Thumb指令功能码段分析,1.实现乘法的功能段与 2n(1,2,4,8,.)相乘ARM:MOV Ra,Rb,LSL#nThumb

9、:LSLRa,Rb,LSL#n 与 2n+1(3,5,9,17,.)相乘ARM:ADD Ra,Rb,Rb,LSL#nThumb:LSL Rt,Rb,#n ADD Ra,Rt,Rb,5.5 Thumb指令功能码段分析,与-2n(-2,-4,-8,.)相乘ARM:MOV Ra,Rb,LSL#n RSB Ra,Ra,#0Thumb:LSLRa,Rb,LSL#n NEG Ra,Ra与-2n+1(-1,-3,-7,-15,.)相乘ARM:SUB Ra,Rb,Rb,LSL#nThumb:LSL Rt,Rb,#n SUB Ra,Rb,Rt,2.实现除法的功能段 入口:R0存放被除数,R1存放除数;出口:R2存放商,R3存放余数。用ARM指令实现:,5.5 Thumb指令功能码段分析,用Thumb代码来实现相同的功能,5.5 Thumb指令功能码段分析,5.5.2 Thumb与ARM性能比较,Thumb代码所需的存储空间约为ARM代码的6070Thumb代码使用的指令数比ARM代码多约3040若使用32位的存储器,ARM代码比Thumb代码快约40若使用16位的存储器,Thumb代码比ARM代码快约4050与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 教案课件

copyright@ 2008-2023 wnwk.com网站版权所有

经营许可证编号:蜀ICP备2023000928号