欢迎来到天天文库
浏览记录
ID:37462430
大小:774.00 KB
页数:85页
时间:2019-05-11
《ARM开发与应用 第四讲 Thumb指令集》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ARM开发与应用理论教学内容安排嵌入式系统开发与应用基础综述ARM技术概述ARM指令集Thumb指令集基于ARM的嵌入式系统应用程序设计基于S3C44B0X的嵌入式系统应用开发嵌入式操作系统及开发简介嵌入式系统开发与应用第四部分Thumb指令集Thumb指令集4.1Thumb指令集概述4.2Thumb指令详细介绍4.1Thumb指令集概述ARM开发工具完全支持Thumb指令,应用程序可以灵活的将ARM和Thumb子程序混合编程以便在例程的基础上提高性能或代码密度。在编写Thumb指令时,先要用伪指令CODE16声明(ADS的编译环
2、境下),而且在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。本节可以分为以下几个部分:4.1.1Thumb指令集编码特点4.1.2Thumb状态切换4.1.3编程模型4.1.4Thumb指令集与ARM指令集的比较4.1.1Thumb指令集特点Thumb指令集是ARM指令集压缩形式的子集,所有Thumb指令均有对应的ARM指令。采用16位二进制编码,代码密度小。执行Thumb指令时,先动态解压缩,然后作为标准的ARM指令执行。如何区分指令流取决于CPSR的第5位(位T)。大多数Thumb数据处理指令采用2地址格式
3、。由于16位的限制,移位操作变成单独指令。Thumb指令集没有协处理器指令、单寄存器交换指令、乘加指令、64位乘法指令以及程序状态寄存器处理指令,而且指令的第2操作数受到限制。除了分支指令B有条件执行功能外,其他指令均为无条件执行。Thumb是一个不完整的体系结构,不能指望处理器只执行Thumb代码而不支持ARM指令集。示例ARM代码:MOVR3,#0LOOPSUBR0,R0,R1ADDGER3,R3,#1BGELOOPADDR2,R0,R1对应的汇编代码:MOVR3,#0LOOPADDR3,#1SUBR0,R1BGELOOPSU
4、BR3,#1ADDR2,R0,R1示例:简单的Thumb程序;功能:使用BX指令切换处理器状态AREAExample8,CODE,READONLYENTRYCODE32ARM_CODEADRR0,THUMB_CODE+1BXR0;跳转并切换处理器状态CODE16THUMB_CODEMOVR0,#10;R0=10MOVR1,#20;R1=20ADDR0,R1;R0=R0+R1B.END在Thumb程序段之前要用CODE16声明。Thumb指令集编码如下:4.1.2Thumb状态切换状态切换1、ARM状态进入Thumb状态的方法执行带
5、状态切换的转移指令BX。若BX指令指定的寄存器的最低位为1,则将T置位,并将程序计数器切换为寄存器其他位给出的地址。BXR0;若R0最低位为1,则转入Thumb状态异常返回也可以将微处理器从ARM状态转换为Thumb状态。通常这种指令用于返回到进入异常前所执行的指令流,而不是特地用于转换到Thumb模式。MOVPC,LR;当返回地址保存在LR时STMFDSP!,{,LR};当返回地址保存在堆栈时,……;进入异常后将R14入栈,……;假设异常前执行的是Thumb指令,PC保存于LR中LDMFDSP!,{6、isters>,PC};返回指令2、Thumb状态进入ARM状态的方法执行Thumb指令中的交换转移BX指令可以显式地返回到ARM指令流。利用异常进入ARM指令流。4.1.3编程模型r0r1r2r3r4r5r6r7r8r9r10r11r12SP(r13)LR(r14)PC(r15)Lo寄存器Hi寄存器CPSR有阴影的寄存器访问时受到限制对低(Lo)8个通用寄存器R0~R7具有全部访问权限,可以被任意指令访问。寄存器R8~R12的访问受到限制,这些寄存器只能通过MOV、ADD和CMP访问。对寄存器R13~R15进行扩展以作特殊应用。7、CPSR间接访问(CMP和数据处理指令影响)。SPSR不能访问。CPSR的条件标志位由算术和逻辑操作设置并控制条件转移。Thumb-ARM相似处:Load/Store结构。有数据处理、数据传送及流控制指令等。支持8位字节、16位半字和32位字数据类型,半字以两字节边界对准,字以4字节边界对准。4.1.4Thumb指令集与ARM指令集的比较Thumb-ARM差异处:大多数Thumb指令是无条件执行的,所有ARM指令都是条件执行的。许多Thumb数据处理指令采用2地址格式(目的寄存器与一个源寄存器相同),ARM数据处理指令大多采用3地8、址格式。ADDR0,R1由于采用高密度编码,Thumb指令格式没有ARM指令格式规则。Thumb异常时表现的一些特点:所有异常都会使微处理器返回到ARM模式状态,并在ARM的编程模式中处理。由于ARM微处理器字传送地址必须可被4整除(即字对准),半
6、isters>,PC};返回指令2、Thumb状态进入ARM状态的方法执行Thumb指令中的交换转移BX指令可以显式地返回到ARM指令流。利用异常进入ARM指令流。4.1.3编程模型r0r1r2r3r4r5r6r7r8r9r10r11r12SP(r13)LR(r14)PC(r15)Lo寄存器Hi寄存器CPSR有阴影的寄存器访问时受到限制对低(Lo)8个通用寄存器R0~R7具有全部访问权限,可以被任意指令访问。寄存器R8~R12的访问受到限制,这些寄存器只能通过MOV、ADD和CMP访问。对寄存器R13~R15进行扩展以作特殊应用。
7、CPSR间接访问(CMP和数据处理指令影响)。SPSR不能访问。CPSR的条件标志位由算术和逻辑操作设置并控制条件转移。Thumb-ARM相似处:Load/Store结构。有数据处理、数据传送及流控制指令等。支持8位字节、16位半字和32位字数据类型,半字以两字节边界对准,字以4字节边界对准。4.1.4Thumb指令集与ARM指令集的比较Thumb-ARM差异处:大多数Thumb指令是无条件执行的,所有ARM指令都是条件执行的。许多Thumb数据处理指令采用2地址格式(目的寄存器与一个源寄存器相同),ARM数据处理指令大多采用3地
8、址格式。ADDR0,R1由于采用高密度编码,Thumb指令格式没有ARM指令格式规则。Thumb异常时表现的一些特点:所有异常都会使微处理器返回到ARM模式状态,并在ARM的编程模式中处理。由于ARM微处理器字传送地址必须可被4整除(即字对准),半
此文档下载收益归作者所有