嵌入式系统(五)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

嵌入式系统第五讲ARM微处理器的指令系统西安电子科技大学计算机学院本节内容ARM指令集简述ARM指令格式ARM指令集编码ARM寻址方式ARM指令介绍Thumb指令介绍西安电子科技大学计算机学院5.1ARM指令集简述Load/Store结构在通用寄存器中进行操作;load/store–从存储器中读某个值,操作完后再将其放回存储器中。指令分类数据处理指令load/store指令跳转指令CPSR处理指令协处理器指令异常产生指令西安电子科技大学计算机学院5.2ARM指令格式基本格式opcode{cond}{S}Rd,Rn{,operand2}说明opcode指令助记符,如LDR,STR等cond执行条件,如EQ,NE等S是否影响CPSR寄存器的值Rd目标寄存器Rn存放第一操作数的寄存器operand2第二个操作数西安电子科技大学计算机学院举例LDRR0,[R1]读取R1地址上的存储器单元内容,执行条件ALBEQDATAEVEN跳转指令,执行条件EQ,即相等跳转到DATAEVENADDSR1,R1,#1加法指令,R1+1=R1影响CPSR寄存器,带有SSUBNESR1,R1,#0xD条件执行减法运算(NE),R1-0xD=R1,影响CPSR寄存器,带有S西安电子科技大学计算机学院条件码西安电子科技大学计算机学院5.3ARM指令集编码西安电子科技大学计算机学院5.4ARM寻址方式寻址方式是根据指令编码中给出的地址码字段来寻找真实操作数的方法分类立即寻址寄存器寻址寄存器偏移寻址寄存器间接寻址变址寻址堆栈寻址块拷贝寻址相对寻址西安电子科技大学计算机学院5.4.1立即寻址也叫立即数寻址操作数就包含在指令的32位编码中如:ADDR0,R0,#1ANDR3,R4,0xFF只有第二源操作数可用立即数立即数要以“#”为前缀,表示16进制数值时以“0x”表示。西安电子科技大学计算机学院立即数的表示用12位数据表示32位数据空间指令编码中留给立即数的空间只有12位每个立即数都由一个8位常数循环右移偶数位得到8(常数)+4(偶数移位个数)=12西安电子科技大学计算机学院例子合法的立即数0xF2000x1100000x12800非法的立即数0x10100x001020xFF1000西安电子科技大学计算机学院5.4.2寄存器寻址操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值操作。如:MOVR1,R2;R2-R1SUBR0,R1,R2;R1-R2-R0西安电子科技大学计算机学院5.4.3寄存器偏移寻址寄存器偏移寻址是ARM指令集特有的寻址方式,是寄存器寻址方式的改进如:MOVR0,R2,LSL#3;R2的值左移3位,结果放入R0,即R0=R2*8ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相与操作,结果放入R1注:第2操作数的12位编码空间有冗余位西安电子科技大学计算机学院移位方式LSL(LogicalShiftLeft)逻辑左移LSR(LogicalShiftRight)逻辑右移ASL(ArithmeticShiftLeft)算术左移ASR(ArithmeticShiftRight)算术右移ROR(RotateRight)循环右移RRX带扩展的循环右移西安电子科技大学计算机学院移位操作西安电子科技大学计算机学院移位位数移位位数可以用立即数或寄存器方式给出如:ADDR3,R2,R1,LSR#2ADDR3,R2,R1,LSRR4西安电子科技大学计算机学院5.4.4寄存器间接寻址利用一个寄存器的值作为存储器地址如:LDRR0,[R1]STRR0,[R1]数据传送指令都是基于寄存器间接寻址的注:数据传送指令都是基于寄存器间接寻址。西安电子科技大学计算机学院5.4.5变址寻址将基址寄存器的内容与指令中给出的偏移量相加,形成存储器的有效地址;是寄存器间接寻址的增强形式如:LDRR0,[R1,#4]偏移量不超过4kOffset为12位西安电子科技大学计算机学院变址模式前变址模式LDRR0,[R1,#4]自动变址模式LDRR0,[R1,#4]!后变址模式LDRR0,[R1],#4西安电子科技大学计算机学院5.4.6堆栈寻址堆栈是一块用于保存数据的连续内存堆栈操作的特点是先进后出堆栈增长方式向上增长(递增)向下增长(递减)堆栈指针指向的数据位置满堆栈空堆栈西安电子科技大学计算机学院ARM支持的堆栈形式满递增:指令如LDMFA,STMFA等空递增:指令如LDMEA,STMEA等满递减:指令如LDMFD,STMFD等空递减:指令如LDMED,STMED等FFullEEmpty西安电子科技大学计算机学院堆栈操作ARM指令中的堆栈形式STMFDSP!{R1-R7,LR}LDMFDSP!{R1-R7,LR}Thumb指令中的堆栈形式PUSH{R1-R7,LR}POP{R1-R7,PC}西安电子科技大学计算机学院5.4.7块拷贝寻址块拷贝寻址是多寄存器传送指令LDM/STM的寻址方式寄存器组可以是16个通用寄存器的任意子集地址增长顺序IAIBDADB西安电子科技大学计算机学院例子西安电子科技大学计算机学院5.4.8相对寻址基地址是程序计数器PC的变址寻址BLSUBR;转移到SUBR;返回到此处SUBR;子程序入口……MOVPC,R14;返回主要用于分支指令西安电子科技大学计算机学院5.5ARM指令介绍5.5.1数据处理指令主要完成寄存器中数据的算术和逻辑运算操作基本原则•所有操作数都是32位宽度•操作数来自寄存器或着立即数分类•数据传送指令•算术、逻辑运算指令•比较、测试指令•乘法指令西安电子科技大学计算机学院5.5.2ARM存储器访问指令单寄存器存取指令(LDR和STR)加载/存储字(32位对齐)加载/存储半字(16位对齐)加载/存储字节(8位对齐)多寄存器存取指令(LDM和STM)可以实现在一组寄存器和一块连续的内存单元之间传输数据堆栈操作和块拷贝存储器和寄存器交换指令SWP使用SWP可实现信号量操作西安电子科技大学计算机学院5.5.3跳转指令B跳转到指定的地址执行程序BL将下一条指令的地址拷贝到R14(即LR)链接寄存器中,然后跳转到指定地址运行程序BX带状态切换的跳转指令BLX带连接和状态切换的跳转指令注:跳转的范围是±32MB西安电子科技大学计算机学院5.5.4杂项指令状态寄存器与通用寄存器之间的传送指令MRSMSR软件中断指令SWI协处理器指令西安电子科技大学计算机学院5.6Thumb指令集Thumb指令集是针对代码密度的问题而提出的。可以看作是ARM指令集的子集。所有Thumb指令均有对应的ARM指令,而Thumb编程模型也对应于ARM模型。Thumb是一个不完整的体系结构,不能指望处理器只执行Thumb代码而不支持ARM指令集。一般Thumb代码只需支持通用功能,必要时可以借助ARM指令集(例:所有异常自动进入ARM模式)应用程序可以灵活的将ARM指令和Thumb程序混合,以便提高性能和代码密度。同时达到降低功耗、节约成本和提高性能的目的。西安电子科技大学计算机学院5.6.1Thumb指令集的执行在任何时刻,对指令流的解释取决于CPSR的第5位,即位T,若T置位,则认为指令流为16位的Thumb指令;否则为标准的ARM指令。并不是所有的ARM处理器都支持Thumb指令。只有在命名中有字母T的才支持,例如以上提到的ARM7TDMI。西安电子科技大学计算机学院5.6.2Thumb状态切换进入Thumb模式复位后,ARM启动并执行ARM指令。转向执行Thumb指令的通常方法是执行一条交换转移指令BX。若BX指令指定的寄存器的最低位为1,则将T置位,并将程序计数器切换为寄存器其他位给出的地址异常返回也可以将微处理器从ARM状态转换为Thumb状态。通常这种指令用于返回到进入异常前所执行的指令流,而不是特地用于转换到Thumb模式西安电子科技大学计算机学院5.6.2Thumb状态切换退出Thumb模式执行ThumbBX指令可以显式地返回到ARM指令流。利用异常进入ARM指令流西安电子科技大学计算机学院5.6.3Thumb指令集特点继承ARM指令集的特点采用Load/Store结构支持8位、16位、32位数据处理丢弃了ARM指令集一些特点大多数Thumb指令无条件执行大多数Thumb数据处理采用2地址格式异常时的表现所有异常都会使处理器返回到ARM状态由Thumb状态进入时地址偏移(2字节对齐)与ARM(4字节对齐)不同Thumb的寻址方式几乎对等于ARM的方式西安电子科技大学计算机学院谢谢!

1 / 35
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功