嵌入式系统结构与操作系统课件chapter02ARM微处理器的指令系统

上传人:w****i 文档编号:91974346 上传时间:2019-07-05 格式:PPT 页数:26 大小:726.50KB
返回 下载 相关 举报
嵌入式系统结构与操作系统课件chapter02ARM微处理器的指令系统_第1页
第1页 / 共26页
嵌入式系统结构与操作系统课件chapter02ARM微处理器的指令系统_第2页
第2页 / 共26页
嵌入式系统结构与操作系统课件chapter02ARM微处理器的指令系统_第3页
第3页 / 共26页
嵌入式系统结构与操作系统课件chapter02ARM微处理器的指令系统_第4页
第4页 / 共26页
嵌入式系统结构与操作系统课件chapter02ARM微处理器的指令系统_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《嵌入式系统结构与操作系统课件chapter02ARM微处理器的指令系统》由会员分享,可在线阅读,更多相关《嵌入式系统结构与操作系统课件chapter02ARM微处理器的指令系统(26页珍藏版)》请在金锄头文库上搜索。

1、2019/7/5,武汉科技大学,Page 1,第2章 ARM微处理器指令系统,【学习目标】 了解ARM指令集、Thumb指令集 熟悉ARM指令集的分类与具体应用 熟悉Thumb指令集及应用场合,2019/7/5,武汉科技大学,Page 2,第2章 ARM微处理器指令系统,2019/7/5,武汉科技大学,Page 3,2.1 ARM指令集概述,ARM指令的分类与格式 指令的条件域,2019/7/5,武汉科技大学,Page 4,2.1.1 ARM指令的分类与格式,ARM微处理器的指令集是加载/存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专

2、门的加载/存储指令来完成。 ARM微处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类,具体的指令及功能如表3-1所示(表中指令为基本ARM指令,不包括派生的ARM指令)。,2019/7/5,武汉科技大学,Page 5,2.1.1 ARM指令的分类与格式,表3-1 ARM指令及功能描述,2019/7/5,武汉科技大学,Page 6,2.1.1 ARM指令的分类与格式,2019/7/5,武汉科技大学,Page 7,2.1.2指令的条件域,当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件

3、域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。 每一条ARM指令包含4位的条件码,位于指令的最高4位31:28。条件码共有16种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令B可以加上后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位时发生跳转。 在16种条件标志码中,只有15种可以使用,如表3-2所示,第16种(1111)为系统保留,暂时不能使用。,2019/7/5,武汉科技大学,Page 8,2.1.2指令的条件域,表3-2指令的条件码,2019/7/5,武汉科技大学,Page 9,2.2 ARM指令详细

4、介绍,ARM指令的寻址方式 ARM十类指令,2019/7/5,武汉科技大学,Page 10,2.2.1 指令的寻址方式,立即寻址 立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令: ADD R0,R0,1 ;R0R01 ADD R0,R0,0x3f ;R0R00x3f 在以上两条指令中,第二个源操作数即为立即数,要求以“”为前缀,对于以十六进制表示的立即数,还要求在“”后加上“0x”或“&”。,2019/7/5,武汉科技大学,Page 11,2.2.1 指令的寻址方式,寄

5、存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令: ADD R0,R1,R2 ;R0R1R2 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中。,2019/7/5,武汉科技大学,Page 12,2.2.1 指令的寻址方式,寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令: ADD R0,R1,R2 ;R0R1R2 LDR R0,R1 ;R0R1 STR R0,R1 ;R1R0 在第一条指令中,以寄存器R2的值作为操作数的地

6、址,在存储器中取得一个操作数后与R1相加,结果存入寄存器R0中。 第二条指令将以R1的值为地址的存储器中的数据传送到R0中。 第三条指令将R0的值传送到以R1的值为地址的存储器中。,2019/7/5,武汉科技大学,Page 13,2.2.1 指令的寻址方式,基址变址寻址 基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示: LDR R0,R1,4 ;R0R14 LDR R0,R1,4! ;R0R14、R1R14 LDR R0,R1

7、 ,4 ;R0R1、R1R14 LDR R0,R1,R2 ;R0R1R2,2019/7/5,武汉科技大学,Page 14,2.2.1 指令的寻址方式,多寄存器寻址 采用多寄存器寻址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令: LDMIA R0,R1,R2,R3,R4 ;R1R0 ;R2R04 ;R3R08 ;R4R012 该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1R4。,2019/7/5,武汉科技大学,Page 15,2.2.1 指令的寻址方式,相对寻址 与基址

8、变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式: BL NEXT ;跳转到子程序NEXT处执行 NEXT MOV PC,LR ;从子程序返回,2019/7/5,武汉科技大学,Page 16,2.2.1 指令的寻址方式,堆栈寻址 堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full St

9、ack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。,2019/7/5,武汉科技大学,Page 17,2.2.2 ARM指令集,跳转指令 B 跳转指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换的跳转指令,2019/7/5,武汉科技大学,Page 18,2.2.2 ARM指令集,数据处理指令 MOV 数据传送指令 MVN 数据取反传送指令 CMP 比较指令 CMN 反值比较指令 TST 位测试指令 TEQ 相等测试指令 ADD 加法指令 ADC 带进位加法指令 SUB 减法指令 SBC 带借位减法指令 RSB 逆向减法

10、指令 RSC 带借位的逆向减法指令 AND 逻辑与指令 ORR 逻辑或指令 EOR 逻辑异或指令 BIC 位清除指令,2019/7/5,武汉科技大学,Page 19,2.2.2 ARM指令集,乘法指令与乘加指令 MUL 32位乘法指令 MLA 32位乘加指令 SMULL 64位有符号数乘法指令 SMLAL 64位有符号数乘加指令 UMULL 64位无符号数乘法指令 UMLAL 64位无符号数乘加指令,程序状态寄存器访问指令 MRS 程序状态寄存器到通用寄存器的数据传送指令 MSR 通用寄存器到程序状态寄存器的数据传送指令,2019/7/5,武汉科技大学,Page 20,2.2.2 ARM指令集

11、,加载/存储指令 LDR 字数据加载指令 LDRB 字节数据加载指令 LDRH 半字数据加载指令 STR 字数据存储指令 STRB 字节数据存储指令 STRH 半字数据存储指令,批量数据加载/存储指令 LDM 批量数据加载指令 STM 批量数据存储指令,2019/7/5,武汉科技大学,Page 21,2.2.2 ARM指令集,数据交换指令 SWP 字数据交换指令 SWPB 字节数据交换指令,移位指令(操作) LSL 逻辑左移 ASL 算术左移 LSR 逻辑右移 ASR 算术右移 ROR 循环右移 RRX 带扩展的循环右移,2019/7/5,武汉科技大学,Page 22,2.2.2 ARM指令集

12、,协处理器指令 CDP 协处理器数操作指令 LDC 协处理器数据加载指令 STC 协处理器数据存储指令 MCR ARM处理器寄存器到协处理器寄存器的数据传送指令 MRC 协处理器寄存器到ARM处理器寄存器的数据传送指令,异常产生指令 SWI 软件中断指令 BKPT 断点中断指令,2019/7/5,武汉科技大学,Page 23,2.3 Thumb指令及应用,为兼容数据总线宽度为16位的应用系统,ARM体系结构除了支持执行效率很高的32位ARM指令集以外,同时支持16位的Thumb指令集。Thumb指令集是ARM指令集的一个子集,允许指令编码为16位的长度。与等价的32位代码相比较,Thumb指令

13、集在保留32代码优势的同时,大大的节省了系统的存储空间。 所有的Thumb指令都有对应的ARM指令,而且Thumb的编程模型也对应于ARM的编程模型,在应用程序的编写过程中,只要遵循一定调用的规则,Thumb子程序和ARM子程序就可以互相调用。当处理器在执行ARM程序段时,称ARM处理器处于ARM工作状态,当处理器在执行Thumb程序段时,称ARM处理器处于Thumb工作状态。,2019/7/5,武汉科技大学,Page 24,2.3 Thumb指令及应用,与ARM指令集相比较,Thumb指令集中的数据处理指令的操作数仍然是32位,指令地址也为32位,但Thumb指令集为实现16位的指令长度,舍

14、弃了ARM指令集的一些特性,如大多数的Thumb指令是无条件执行的,而几乎所有的ARM指令都是有条件执行的;大多数的Thumb数据处理指令的目的寄存器与其中一个源寄存器相同。 由于Thumb指令的长度为16位,即只用ARM指令一半的位数来实现同样的功能,所以,要实现特定的程序功能,所需的Thumb指令的条数较ARM指令多。在一般的情况下,Thumb指令与ARM指令的时间效率和空间效率关系为: (1)Thumb代码所需的存储空间约为ARM代码的6070 (2)Thumb代码使用的指令数比ARM代码多约3040 (3)若使用32位的存储器,ARM代码比Thumb代码快约40 (4)若使用16位的存

15、储器,Thumb代码比ARM代码快约4050 (5)与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30,2019/7/5,武汉科技大学,Page 25,2.3 Thumb指令及应用,显然,ARM指令集和Thumb指令集各有其优点,若对系统的性能有较高要求,应使用32位的存储系统和ARM指令集,若对系统的成本及功耗有较高要求,则应使用16位的存储系统和Thumb指令集。当然,若两者结合使用,充分发挥其各自的优点,会取得更好的效果。,2019/7/5,武汉科技大学,Page 26,2.4 小结,本章系统的介绍了ARM指令集中的基本指令,以及各指令的应用场合及方法,由基本指令还可以派生出一些新的指令,但使用方法与基本指令类似。与常见的如X86体系结构的汇编指令相比较,ARM指令系统无论是从指令集本身,还是从寻址方式上,都相对复杂一些。 Thumb指令集作为ARM指令集的一个子集,其使用方法与ARM指令集类似,在此未作详细的描述,但这并不意味着Thumb指令集不如ARM指令集重要,事实上,他们各自有其自己的应用场合。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号