ImageVerifierCode 换一换
格式:PPT , 页数:151 ,大小:421.18KB ,
文档编号:4032333      下载积分:29 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-4032333.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(ARM体系结构与指令集培训课件1.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

ARM体系结构与指令集培训课件1.ppt

1、ARMARM体系结构的特点体系结构的特点2.1ARMARM处理器工作模式处理器工作模式2.2寄存器组织寄存器组织2.3流流 水水 线线2.4ARMARM存储系统存储系统2.5异异 常常2.6ARMARM处理器的寻址方式处理器的寻址方式2.7ARMARM处理器的指令集处理器的指令集2.8 本章将要介绍本章将要介绍ARMARM体系结构、体系结构、ARMARM处理器处理器的工作模式及常用指令集等。通过本章的学习,的工作模式及常用指令集等。通过本章的学习,希望读者能够了解希望读者能够了解ARMARM处理器内部的主要工作处理器内部的主要工作单元、基本工作原理,掌握常用指令集,并为单元、基本工作原理,掌握

2、常用指令集,并为以后的程序设计打下基础。以后的程序设计打下基础。本章主要内容:本章主要内容:ARMARM体系结构的特点体系结构的特点 ARMARM处理器的工作模式处理器的工作模式 寄存器组织寄存器组织 流水线流水线 ARMARM存储存储 异常异常 ARMARM处理器的寻址方式处理器的寻址方式 ARMARM处理器的指令集处理器的指令集 ARM ARM内核采用内核采用RISCRISC体系结构。体系结构。RISCRISC技术的技术的主要特点参见主要特点参见1.31.3节。节。ARMARM体系结构的主要特征如下(在本书的体系结构的主要特征如下(在本书的后续章节中将对这些特征做详细讲解):后续章节中将对

3、这些特征做详细讲解):(1 1)大量的寄存器,它们都可以用于多)大量的寄存器,它们都可以用于多种用途;种用途;(2 2)Load/StoreLoad/Store体系结构;体系结构;(3 3)每条指令都条件执行;)每条指令都条件执行;(4 4)多寄存器的)多寄存器的Load/StoreLoad/Store指令;指令;(5 5)能够在单时钟周期执行的单条指令)能够在单时钟周期执行的单条指令内完成一项普通的移位操作和一项普通的内完成一项普通的移位操作和一项普通的ALUALU操作;操作;(6 6)通过协处理器指令集来扩展)通过协处理器指令集来扩展ARMARM指指令集,包括在编程模式中增加了新的寄存器和

4、令集,包括在编程模式中增加了新的寄存器和数据类型。数据类型。(7 7)如果把)如果把ThumbThumb指令集也当作指令集也当作ARMARM体系体系结构的一部分,那么还可以加上:在结构的一部分,那么还可以加上:在ThumbThumb体体系结构中以高密度系结构中以高密度1616位压缩形式表示指令集。位压缩形式表示指令集。除用户模式外的其他除用户模式外的其他6 6种处理器模式称为种处理器模式称为特权模式(特权模式(Privileged ModesPrivileged Modes)。在特权模)。在特权模式下,程序可以访问所有的系统资源,也可以式下,程序可以访问所有的系统资源,也可以任意地进行处理器模

5、式切换。其中以下任意地进行处理器模式切换。其中以下5 5种又种又称为异常模式:称为异常模式:(1 1)快速中断模式()快速中断模式(FIQFIQ););(2 2)外部中断模式()外部中断模式(IRQIRQ););(3 3)特权模式()特权模式(SuperviorSupervior););(4 4)数据访问中止模式()数据访问中止模式(AbortAbort););(5 5)未定义指令中止模式()未定义指令中止模式(UndefUndef)。)。ARM ARM处理器有如下处理器有如下3737个个3232位长的寄存器:位长的寄存器:(1 1)3030个通用寄存器;个通用寄存器;(2 2)6 6个状态寄

6、存器:个状态寄存器:1 1个个CPSRCPSR(Current Program Status RegisterCurrent Program Status Register,当前,当前程序状态寄存器),程序状态寄存器),5 5个个SPSRSPSR(Saved Saved Program Status RegisterProgram Status Register,备份程序状态寄,备份程序状态寄存器);存器);(3 3)1 1个个PCPC(Program CounterProgram Counter,程序计,程序计数器)。数器)。ARM ARM处理器共有处理器共有7 7种不同的处理器模式,种不同

7、的处理器模式,在每一种处理器模式中有一组相应的寄存器组。在每一种处理器模式中有一组相应的寄存器组。表表2-22-2列出了列出了ARMARM处理器的寄存器组织概要。处理器的寄存器组织概要。2.3.1 通用寄存器通用寄存器 通用寄存器根据其分组与否可分为以下通用寄存器根据其分组与否可分为以下2 2类。类。(1 1)未分组寄存器()未分组寄存器(the Unbanked the Unbanked RegisterRegister),包括),包括R0R0R7R7。(2 2)分组寄存器()分组寄存器(the Banked the Banked RegisterRegister),包括),包括R8R8R1

8、4R14。未分组寄存器包括未分组寄存器包括R0R0R7R7。未分组寄存器没有被系统用于特殊的用途,未分组寄存器没有被系统用于特殊的用途,任何可采用通用寄存器的应用场合都可以使用任何可采用通用寄存器的应用场合都可以使用未分组寄存器。未分组寄存器。1 1未分组寄存器未分组寄存器 对于分组寄存器对于分组寄存器R13R13和和R14R14来说,每个寄来说,每个寄存器对应存器对应6 6个不同的物理寄存器。其中的一个个不同的物理寄存器。其中的一个是用户模式和系统模式公用的,而另外是用户模式和系统模式公用的,而另外5 5个分个分别用于别用于5 5种异常模式。访问时需要指定它们的种异常模式。访问时需要指定它们

9、的模式。名字形式如下:模式。名字形式如下:(1 1)R13_R13_ (2 2)R14_R14_ 其中,其中,可以是以下几种模式之一:可以是以下几种模式之一:usrusr、svcsvc、abtabt、undund、irpirp及及fiqfiq。2 2分组寄存器分组寄存器 寄存器寄存器R14R14又被称为连接寄存器(又被称为连接寄存器(Link Link RegisterRegister,LRLR),在),在ARMARM体系结构中具有下面体系结构中具有下面两种特殊的作用。两种特殊的作用。(1 1)每一种处理器模式用自己的)每一种处理器模式用自己的R14R14存存放当前子程序的返回地址。放当前子程

10、序的返回地址。(2 2)当异常中断发生时,该异常模式特)当异常中断发生时,该异常模式特定的物理寄存器定的物理寄存器R14R14被设置成该异常模式的返被设置成该异常模式的返回地址,对于有些模式回地址,对于有些模式R14R14的值可能与返回地的值可能与返回地址有一个常数的偏移量(如数据异常使用址有一个常数的偏移量(如数据异常使用SUB SUB PCPC,LRLR,#8#8返回)。返回)。R14R14也可以被用做通用寄存器使用。也可以被用做通用寄存器使用。2.3.2 状态寄存器状态寄存器 当前程序状态寄存器(当前程序状态寄存器(Current Program Current Program Stat

11、us RegisterStatus Register,CPSRCPSR)可以在任何处理器)可以在任何处理器模式下被访问,它包含下列内容:模式下被访问,它包含下列内容:(1 1)ALUALU(Arithmetic Logic UnitArithmetic Logic Unit,算,算术逻辑单元)状态标志的备份;术逻辑单元)状态标志的备份;(2 2)当前的处理器模式;)当前的处理器模式;(3 3)中断使能标志;)中断使能标志;(4 4)设置处理器的状态(只在)设置处理器的状态(只在4T4T架构)。架构)。N N(NegativeNegative)、)、Z Z(ZeroZero)、)、C C(Car

12、ryCarry)和和V V(oVerflowoVerflow)通称为条件标志位。)通称为条件标志位。(1 1)N N (2 2)Z Z (3 3)C C (4 4)V V1 1标志位标志位 在带在带DSPDSP指令扩展的指令扩展的ARM v5ARM v5及更高版本中,及更高版本中,bit27bit27被指定用于指示增强的被指定用于指示增强的DAPDAP指令是否指令是否发生了溢出,因此也就被称为发生了溢出,因此也就被称为Q Q标志位。同样,标志位。同样,在在SPSRSPSR中中bit27bit27也被称为也被称为Q Q标志位,用于在标志位,用于在异常中断发生时保存和恢复异常中断发生时保存和恢复C

13、PSRCPSR中的中的Q Q标志位。标志位。2 2Q Q标志位标志位 CPSR CPSR的低的低8 8位(位(I I、F F、T T及及M40M40)统称)统称为控制位。当异常发生时,这些位的值将发生为控制位。当异常发生时,这些位的值将发生相应的变化。另外,如果在特权模式下,也可相应的变化。另外,如果在特权模式下,也可以通过软件编程来修改这些位的值。以通过软件编程来修改这些位的值。(1 1)中断禁止位)中断禁止位 (2 2)状态控制位)状态控制位 (3 3)模式控制位)模式控制位3 3控制位控制位2.3.3 程序计数器程序计数器 程序计数器程序计数器R15R15又被记为又被记为PCPC。程序计

14、数器在下面两种情况下用于特殊的程序计数器在下面两种情况下用于特殊的目的。目的。(1 1)读程序计数器。)读程序计数器。(2 2)写程序计数器。)写程序计数器。2.4.1 流水线的概念与原理流水线的概念与原理 处理器按照一系列步骤来执行每一条指令,处理器按照一系列步骤来执行每一条指令,典型的步骤如下:典型的步骤如下:(1 1)从存储器读取指令()从存储器读取指令(fetchfetch););(2 2)译码以鉴别它是属于哪一条指令)译码以鉴别它是属于哪一条指令(decodedecode););(3 3)从指令中提取指令的操作数(这)从指令中提取指令的操作数(这些操作数往往存在于寄存器中)(些操作数

15、往往存在于寄存器中)(regreg););(4 4)将操作数进行组合以得到结果或存)将操作数进行组合以得到结果或存储器地址(储器地址(ALUALU););(5 5)如果需要,则访问存储器以存储数)如果需要,则访问存储器以存储数据(据(memmem););(6 6)将结果写回到寄存器堆()将结果写回到寄存器堆(resres)。)。2.4.2 流水线的分类流水线的分类 到到ARM7ARM7为止的为止的ARMARM处理器使用简单的处理器使用简单的3 3级级流水线,它包括下列流水线级。流水线,它包括下列流水线级。(1 1)取指令()取指令(fetchfetch):从寄存器装载):从寄存器装载一条指令。

16、一条指令。(2 2)译码()译码(decodedecode):识别被执行的指):识别被执行的指令,并为下一个周期准备数据通路的控制信号。令,并为下一个周期准备数据通路的控制信号。在这一级,指令占有译码逻辑,不占用数据通在这一级,指令占有译码逻辑,不占用数据通路。路。(3 3)执行()执行(excuteexcute):处理指令并将结):处理指令并将结果写回寄存器。果写回寄存器。1 13 3级流水线级流水线ARMARM组织组织 在在ARM9TDMIARM9TDMI中使用了典型的中使用了典型的5 5级流水线,级流水线,5 5级流水线包括下面的流水线级。级流水线包括下面的流水线级。(1 1)取指令()

17、取指令(fetchfetch):从存储器中取):从存储器中取出指令,并将其放入指令流水线。出指令,并将其放入指令流水线。(2 2)译码()译码(decodedecode):指令被译码,从):指令被译码,从寄存器堆中读取寄存器操作数。在寄存器堆中寄存器堆中读取寄存器操作数。在寄存器堆中有有3 3个操作数读端口,因此,大多数个操作数读端口,因此,大多数ARMARM指令能指令能在在1 1个周期内读取其操作数。个周期内读取其操作数。2 25 5级流水线级流水线ARMARM组织组织 (3 3)执行()执行(executeexecute):将其中):将其中1 1个操作个操作数移位,并在数移位,并在ALUA

18、LU中产生结果。如果指令是中产生结果。如果指令是LoadLoad或或StoreStore指令,则在指令,则在ALUALU中计算存储器的中计算存储器的地址。地址。(4 4)缓冲)缓冲/数据(数据(buffer/databuffer/data):如果):如果需要则访问数据存储器,否则需要则访问数据存储器,否则ALUALU只是简单地只是简单地缓冲缓冲1 1个时钟周期。个时钟周期。(5 5)回写()回写(write-backwrite-back):将指令的结):将指令的结果回写到寄存器堆,包括任何从寄存器读出的果回写到寄存器堆,包括任何从寄存器读出的数据。数据。在在ARM10ARM10中,将流水线的级

19、数增加到中,将流水线的级数增加到6 6级,级,使系统的平均处理能力达到了使系统的平均处理能力达到了1.3DMIPS/MHz1.3DMIPS/MHz。3 36 6级流水线级流水线ARMARM组织组织2.4.3 影响流水线性能的因素影响流水线性能的因素1 1互锁互锁2 2跳转指令跳转指令 将某个分区或是设备挂载了以后才能使用,将某个分区或是设备挂载了以后才能使用,但是当计算机重新启动以后,又需要重新挂载,但是当计算机重新启动以后,又需要重新挂载,这个时候可以通过修改这个时候可以通过修改/etc/fstab/etc/fstab文件实现文件实现开机自动挂载文件系统。开机自动挂载文件系统。ARM ARM

20、存储系统有非常灵活的体系结构,可存储系统有非常灵活的体系结构,可以适应不同的嵌入式应用系统的需要。以适应不同的嵌入式应用系统的需要。ARMARM存存储器系统可以使用简单的平板式地址映射机制储器系统可以使用简单的平板式地址映射机制(就像一些简单的单片机一样,地址空间的分(就像一些简单的单片机一样,地址空间的分配方式是固定的,系统中各部分都使用物理地配方式是固定的,系统中各部分都使用物理地址),也可以使用其他技术提供功能更为强大址),也可以使用其他技术提供功能更为强大的存储系统。的存储系统。例如:例如:(1 1)系统可能提供多种类型的存储器件,)系统可能提供多种类型的存储器件,如如FlashFla

21、sh、ROMROM、SRAMSRAM等;等;(2 2)CacheCache技术;技术;(3 3)写缓存技术()写缓存技术(write bufferswrite buffers););(4 4)虚拟内存和)虚拟内存和I/OI/O地址映射技术。地址映射技术。大多数的系统通过下面的方法之一可实大多数的系统通过下面的方法之一可实现对复杂存储系统的管理。现对复杂存储系统的管理。(1 1)使用)使用CacheCache,缩小处理器和存储系,缩小处理器和存储系统速度差别,从而提高系统的整体性能。统速度差别,从而提高系统的整体性能。(2 2)使用内存映射技术实现虚拟空间)使用内存映射技术实现虚拟空间到物理空间

22、的映射。到物理空间的映射。(3 3)引入存储保护机制,增强系统的)引入存储保护机制,增强系统的安全性。安全性。(4 4)引入一些机制保证将)引入一些机制保证将I/OI/O操作映射操作映射成内存操作后,各种成内存操作后,各种I/OI/O操作能够得到正确的操作能够得到正确的结果。结果。(1 1)内核级的寄存器。)内核级的寄存器。(2 2)芯片级的紧耦合存储器)芯片级的紧耦合存储器TCMTCM。(3 3)芯片级的片上)芯片级的片上CacheCache存储器的容量存储器的容量在在8 832KB32KB之间,访问时间大约为之间,访问时间大约为10ns10ns。(4 4)板卡级的)板卡级的DRAMDRAM

23、。(5 5)外设级的后援存储器,通常是硬盘,)外设级的后援存储器,通常是硬盘,可能从几百可能从几百MBMB到几个到几个GBGB,访问时间为几十,访问时间为几十msms。2.5.1 协处理器(协处理器(CP15)ARM ARM处理器支持处理器支持1616个协处理器。个协处理器。CP15CP15,即通常所说的系统控制协处理器,即通常所说的系统控制协处理器(System Control CoprocesssorSystem Control Coprocesssor),它负责),它负责完成大部分的存储系统管理。完成大部分的存储系统管理。CP15CP15包含包含1616个个3232位寄存器,其编号为位寄

24、存器,其编号为0 01515。CP15CP15中的寄存器可能是只读的,也可能中的寄存器可能是只读的,也可能是只写的,还有一些是可读可写的。是只写的,还有一些是可读可写的。2.5.2 存储管理单元(存储管理单元(MMU)在创建多任务嵌入式系统时,最好有一个在创建多任务嵌入式系统时,最好有一个简单的方式来编写、装载及运行各自独立的任简单的方式来编写、装载及运行各自独立的任务。目前大多数的嵌入式系统不再使用自己定务。目前大多数的嵌入式系统不再使用自己定制的控制系统,而使用操作系统来简化这个过制的控制系统,而使用操作系统来简化这个过程。较高级的操作系统采用基于硬件的存储管程。较高级的操作系统采用基于硬

25、件的存储管理单元(理单元(MMUMMU)来实现上述操作。)来实现上述操作。MMU MMU提供的一个关键服务是使各个任务作提供的一个关键服务是使各个任务作为各自独立的程序在其自己的私有存储空间中为各自独立的程序在其自己的私有存储空间中运行。在带运行。在带MMUMMU的操作系统控制下,运行的任的操作系统控制下,运行的任务无须知道其他与之无关的任务的存储需求情务无须知道其他与之无关的任务的存储需求情况,这就简化了各个任务的设计。况,这就简化了各个任务的设计。MMU MMU提供了一些资源以允许使用虚拟存提供了一些资源以允许使用虚拟存储器(将系统物理存储器重新编址,可将其看储器(将系统物理存储器重新编址

26、,可将其看成一个独立于系统物理存储器的存储空间)。成一个独立于系统物理存储器的存储空间)。MMUMMU作为转换器,将程序和数据的虚拟地址作为转换器,将程序和数据的虚拟地址(编译时的连接地址)转换成实际的物理地址,(编译时的连接地址)转换成实际的物理地址,即在物理主存中的地址。这个转换过程允许运即在物理主存中的地址。这个转换过程允许运行的多个程序使用相同的虚拟地址,而各自存行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置。储在物理存储器的不同位置。这样存储器就有两种类型的地址:虚拟地这样存储器就有两种类型的地址:虚拟地址和物理地址。址和物理地址。2.5.3 高速缓冲存储器(高速缓

27、冲存储器(Cache)Cache Cache是一个容量小但存取速度非常快是一个容量小但存取速度非常快的存储器,它保存最近用到的存储器数据副本。的存储器,它保存最近用到的存储器数据副本。CacheCache经常与写缓存器(经常与写缓存器(write bufferwrite buffer)一起)一起使用。使用。通过引入通过引入CacheCache和写缓存区,存储系统的和写缓存区,存储系统的性能得到了很大的提高,但同时也带来了一些性能得到了很大的提高,但同时也带来了一些问题。问题。ARM ARM体系结构中,存在体系结构中,存在7 7种异常处理。当种异常处理。当异常发生时,处理器会把异常发生时,处理器

28、会把PCPC设置为一个特定的设置为一个特定的存储器地址。这一地址放在被称为向量表存储器地址。这一地址放在被称为向量表(vector tablevector table)的特定地址范围内。向量)的特定地址范围内。向量表的入口是一些跳转指令,跳转到专门处理某表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。个异常或中断的子程序。2.6.1 异常的种类异常的种类2.6.2 异常的优先级异常的优先级2.6.3 构建异常向量表构建异常向量表 当处理器的复位引脚有效时,系统产生复当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程位异常中断,程序跳转到复位异常中断处理程

29、序处执行。复位异常中断通常用在下面两种情序处执行。复位异常中断通常用在下面两种情况下:况下:(1 1)系统上电;)系统上电;(2 2)系统复位。)系统复位。1 1复位异常复位异常 当当ARMARM处理器执行协处理器指令时,它处理器执行协处理器指令时,它必须等待一个外部协处理器应答后,才能真正必须等待一个外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,则发生执行这条指令。若协处理器没有响应,则发生未定义指令异常。未定义指令异常。2 2未定义指令异常未定义指令异常 软中断(软中断(SWISWI)异常发生时,处理器进入)异常发生时,处理器进入特权模式,执行一些特权模式下的操作系统功特权

30、模式,执行一些特权模式下的操作系统功能。能。3 3软中断软中断 预取指令异常是由系统存储器报告的。预取指令异常是由系统存储器报告的。当处理器试图去取一条被标记为预取无效的指当处理器试图去取一条被标记为预取无效的指令时,发生预取指令异常。令时,发生预取指令异常。如果系统中不包含如果系统中不包含MMUMMU时,指令预取异时,指令预取异常中断处理程序只是简单地报告错误并退出。常中断处理程序只是简单地报告错误并退出。若包含若包含MMUMMU,引起异常的指令的物理地址被存,引起异常的指令的物理地址被存储到内存中。储到内存中。4 4预取指令异常预取指令异常 数据访问中止异常是由存储器发出数据中数据访问中止

31、异常是由存储器发出数据中止信号,它由存储器访问指令止信号,它由存储器访问指令Load/StoreLoad/Store产产生。当数据访问指令的目标地址不存在或者该生。当数据访问指令的目标地址不存在或者该地址不允许当前指令访问时,处理器产生数据地址不允许当前指令访问时,处理器产生数据访问中止异常。访问中止异常。5 5数据访问中止异常数据访问中止异常 当处理器的外部中断请求(当处理器的外部中断请求(IRQIRQ)引脚有)引脚有效,而且效,而且CPSRCPSR寄存器的寄存器的I I控制位被清除时,处控制位被清除时,处理器产生外部中断理器产生外部中断IRQIRQ异常。系统中各外部设异常。系统中各外部设备

32、通常通过该异常中断请求处理器服务。备通常通过该异常中断请求处理器服务。6 6外部中断请求外部中断请求 当处理器的快速中断请求(当处理器的快速中断请求(FIQFIQ)引脚有)引脚有效且效且CPSRCPSR寄存器的寄存器的F F控制位被清除时,处理器控制位被清除时,处理器产生快速中断请求产生快速中断请求FIQFIQ异常。异常。7 7快速中断请求快速中断请求2.6.4 异常响应流程异常响应流程 当异常发生时,处理器自动切换到当异常发生时,处理器自动切换到ARMARM状状态,所以在异常处理函数中要判断在异常发生态,所以在异常处理函数中要判断在异常发生前处理器是前处理器是ARMARM状态还是状态还是Th

33、umbThumb状态。这可以状态。这可以通过检测通过检测SPSRSPSR的的T T位来判断。位来判断。1 1判断处理器状态判断处理器状态 通常情况下,只有在通常情况下,只有在SWISWI处理函数中才需处理函数中才需要知道异常发生前处理器的状态。所以在要知道异常发生前处理器的状态。所以在ThumbThumb状态下,调用状态下,调用SWISWI软中断异常必须注意软中断异常必须注意以下两点。以下两点。(1 1)发生异常的指令地址为)发生异常的指令地址为(lr(lr2)2),而不是而不是(lr(lr4)4)。(2 2)ThumbThumb状态下的指令是状态下的指令是1616位的,在位的,在判断中断向量

34、信号时使用半字加载指令判断中断向量信号时使用半字加载指令LDRHLDRH。前面介绍向量表时提到,每一个异常发生前面介绍向量表时提到,每一个异常发生时总是从异常向量表开始跳转。最简单的一种时总是从异常向量表开始跳转。最简单的一种情况是向量表里面的每一条指令直接跳向对应情况是向量表里面的每一条指令直接跳向对应的异常处理函数。其中快速中断处理函数的异常处理函数。其中快速中断处理函数FIQ_handler()FIQ_handler()可以直接从地址可以直接从地址0 x1C0 x1C处开始,处开始,省下一条跳转指令,如图省下一条跳转指令,如图2-72-7所示。所示。(1 1)MOV PCMOV PC,i

35、mme_valueimme_value (2 2)LDR PCLDR PC,PC+offsetPC+offset2 2向量表向量表2.6.5 从异常处理程序中返回从异常处理程序中返回 当一个异常处理返回时,一共有当一个异常处理返回时,一共有3 3件事情件事情需要处理:通用寄存器的恢复、状态寄存器的需要处理:通用寄存器的恢复、状态寄存器的恢复及恢复及PCPC指针的恢复。通用寄存器的恢复采用指针的恢复。通用寄存器的恢复采用一般的堆栈操作指令即可,下面重点介绍状态一般的堆栈操作指令即可,下面重点介绍状态寄存器的恢复及寄存器的恢复及PCPC指针的恢复。指针的恢复。PC PC和和CPSRCPSR的恢复可

36、以通过一条指令来实的恢复可以通过一条指令来实现,下面是现,下面是3 3个例子。个例子。(1 1)MOVS PCMOVS PC,LRLR (2 2)SUBS PCSUBS PC,LRLR,4 4 (3 3)LDMFD SP!LDMFD SP!,PCPC1 1恢复被中断程序的处理器状态恢复被中断程序的处理器状态 异常返回时,另一个非常重要的问题就是异常返回时,另一个非常重要的问题就是返回地址的确定。返回地址的确定。2 2异常的返回地址异常的返回地址(1 1)软中断异常)软中断异常(2 2)IRQIRQ或或FIQFIQ异常异常(3 3)Data AbortData Abort数据中止异常数据中止异常

37、 ARM ARM指令集可以分为跳转指令、数据处理指令集可以分为跳转指令、数据处理指令、程序状态寄存器传输指令、指令、程序状态寄存器传输指令、Load/StoreLoad/Store指令、协处理器指令和异常中断指令、协处理器指令和异常中断产生指令。根据使用的指令类型不同,指令的产生指令。根据使用的指令类型不同,指令的寻址方式分为数据处理指令寻址方式和内存访寻址方式分为数据处理指令寻址方式和内存访问指令寻址方式。问指令寻址方式。2.7.1 数据处理指令寻址方式数据处理指令寻址方式 数据处理指令的基本语法格式如下:数据处理指令的基本语法格式如下:S S,其中,其中,有有1111种形式,种形式,如表如

38、表2-72-7所示。所示。数据处理指令寻址方式可以分为以下几种。数据处理指令寻址方式可以分为以下几种。(1 1)立即数寻址方式;)立即数寻址方式;(2 2)寄存器寻址方式;)寄存器寻址方式;(3 3)寄存器移位寻址方式)寄存器移位寻址方式 。指令中的立即数是由一个指令中的立即数是由一个8bit8bit的常数移的常数移动动4bit4bit偶数位(偶数位(0 0,2 2,4 4,2626,2828,3030)得到的。所以,每一条指令都包含一个得到的。所以,每一条指令都包含一个8bit8bit的的常数常数X X和移位值和移位值Y Y,得到的立即数,得到的立即数=X=X循环右循环右移(移(2 2Y Y

39、)。)。1 1立即数寻址方式立即数寻址方式 寄存器的值可以被直接用于数据操作指令寄存器的值可以被直接用于数据操作指令,这种寻址方式是各类处理器经常采用的一种方这种寻址方式是各类处理器经常采用的一种方式式,也是一种执行效率较高的寻址方式也是一种执行效率较高的寻址方式,2 2寄存器寻址方式寄存器寻址方式 寄存器的值在被送到寄存器的值在被送到ALUALU之前,可以事先之前,可以事先经过桶形移位寄存器的处理。预处理和移位发经过桶形移位寄存器的处理。预处理和移位发生在同一周期内,所以有效地使用移位寄存器,生在同一周期内,所以有效地使用移位寄存器,可以增加代码的执行效率。可以增加代码的执行效率。3 3寄存

40、器移位寻址方式寄存器移位寻址方式2.7.2 内存访问指令寻址方式内存访问指令寻址方式 内存访问指令的寻址方式可以分为以下几内存访问指令的寻址方式可以分为以下几种。种。(1 1)字及无符号字节的)字及无符号字节的Load/StoreLoad/Store指令指令的寻址方式;的寻址方式;(2 2)杂类)杂类Load/StoreLoad/Store指令的寻址方式;指令的寻址方式;(3 3)批量)批量Load/StoreLoad/Store指令的寻址方式;指令的寻址方式;(4 4)协处理器)协处理器Load/StoreLoad/Store指令的寻址方指令的寻址方式。式。字及无符号字节的字及无符号字节的L

41、oad/StoreLoad/Store指令语法指令语法格式如下:格式如下:LDR|STRBT LDR|STRBT ,1 1字及无符号字节的字及无符号字节的Load/StoreLoad/Store指令的指令的寻址方式寻址方式 使用该类寻址方式的指令的语法格式如下:使用该类寻址方式的指令的语法格式如下:LDR|STRH|SH|SB|D LDR|STRH|SH|SB|D ,2 2杂类杂类Load/StoreLoad/Store指令的寻址方式指令的寻址方式 批量批量Load/StoreLoad/Store指令将一片连续内存单指令将一片连续内存单元的数据加载到通用寄存器组中或将一组通用元的数据加载到通用

42、寄存器组中或将一组通用寄存器的数据存储到内存单元中。寄存器的数据存储到内存单元中。该类指令的语法格式如下:该类指令的语法格式如下:LDM|STM LDM|STM !,!,3 3批量批量Load/StoreLoad/Store指令寻址方式指令寻址方式 堆栈操作寻址方式和批量堆栈操作寻址方式和批量Load/StoreLoad/Store指指令寻址方式十分类似。但对于堆栈的操作,数令寻址方式十分类似。但对于堆栈的操作,数据写入内存和从内存中读出要使用不同的寻址据写入内存和从内存中读出要使用不同的寻址模式,因为进栈操作(模式,因为进栈操作(poppop)和出栈操作)和出栈操作(pushpush)要在不

43、同的方向上调整堆栈。)要在不同的方向上调整堆栈。4 4堆栈操作寻址方式堆栈操作寻址方式 根据不同的寻址方式,将堆栈分为以下根据不同的寻址方式,将堆栈分为以下4 4种。种。(1 1)FullFull栈:堆栈指针指向栈顶元素栈:堆栈指针指向栈顶元素(last used locationlast used location)。)。(2 2)EmptyEmpty栈:堆栈指针指向第一个可栈:堆栈指针指向第一个可用元素(用元素(the first unused locationthe first unused location)。)。(3 3)递减栈:堆栈向内存地址减小的方)递减栈:堆栈向内存地址减小的方

44、向生长。向生长。(4 4)递增栈:堆栈向内存地址增加的方)递增栈:堆栈向内存地址增加的方向生长。向生长。根据堆栈的不同种类,将其寻址方式分为根据堆栈的不同种类,将其寻址方式分为以下以下4 4种。种。(1 1)满递减)满递减FDFD(Full DescendingFull Descending)。)。(2 2)空递减)空递减EDED(Empty DescendingEmpty Descending)。)。(3 3)满递增)满递增FAFA(Full AscendingFull Ascending)。)。(4 4)空递增)空递增EAEA(Empty AscendingEmpty Ascending)

45、。)。协处理器协处理器Load/StoreLoad/Store指令的语法格式如指令的语法格式如下:下:L L ,5 5协处理器协处理器Load/StoreLoad/Store寻址方式寻址方式 数据操作指令是指对存放在寄存器中的数数据操作指令是指对存放在寄存器中的数据进行操作的指令。主要包括数据传送指令、据进行操作的指令。主要包括数据传送指令、算术指令、逻辑指令、比较与测试指令及乘法算术指令、逻辑指令、比较与测试指令及乘法指令。指令。2.8.1 数据操作指令数据操作指令 MOV MOV指令是最简单的指令是最简单的ARMARM指令,执行的结指令,执行的结果就是把一个数果就是把一个数N N送到目标寄

46、存器送到目标寄存器RdRd,其中,其中N N可可以是寄存器,也可以是立即数。以是寄存器,也可以是立即数。MOVMOV指令多用于设置初始值或者在寄存器指令多用于设置初始值或者在寄存器间传送数据。间传送数据。MOVMOV指令将移位码(指令将移位码(shifter_operandshifter_operand)表示的数据传送到目的寄存器表示的数据传送到目的寄存器RdRd,并根据操作,并根据操作的结果更新的结果更新CPSRCPSR中相应的条件标志位。中相应的条件标志位。1 1MOVMOV指令指令 (1 1)指令的语法格式)指令的语法格式MOVS ,MOVS ,(2 2)指令举例)指令举例 (3 3)指

47、令的使用)指令的使用 MVN MVN是反相传送(是反相传送(Move NegativeMove Negative)指令。)指令。它将操作数的反码传送到目的寄存器。它将操作数的反码传送到目的寄存器。MVNMVN指令多用于向寄存器传送一个负数或生成指令多用于向寄存器传送一个负数或生成位掩码。位掩码。MVNMVN指令将指令将shifter_operandshifter_operand表示的数据表示的数据的反码传送到目的寄存器的反码传送到目的寄存器RdRd。并根据操作的结。并根据操作的结果更新果更新CPSRCPSR中相应的条件标志位。中相应的条件标志位。2 2MVNMVN指令指令 (1 1)指令的语法

48、格式)指令的语法格式MVNS ,MVNS ,(2 2)指令举例)指令举例 (3 3)指令的使用)指令的使用 AND AND指令将指令将shifter_operandshifter_operand表示的数值表示的数值与寄存器与寄存器RnRn的值按位(的值按位(bitwisebitwise)做逻辑与操)做逻辑与操作,并将结果保存到目标寄存器作,并将结果保存到目标寄存器RdRd中,同时根中,同时根据操作的结果更新据操作的结果更新CPSRCPSR寄存器。寄存器。(1 1)指令的语法格式)指令的语法格式 ANDS ANDS ,(2 2)指令举例)指令举例3 3ANDAND指令指令 EOR EOR(Exc

49、lusive ORExclusive OR)指令将寄存器)指令将寄存器RnRn中的值和中的值和shifter_operandshifter_operand的值执行按位的值执行按位“异异或或”操作,并将执行结果存储到目的寄存器操作,并将执行结果存储到目的寄存器RdRd中,同时根据指令的执行结果更新中,同时根据指令的执行结果更新CPSRCPSR中相应中相应的条件标志位。的条件标志位。(1 1)指令的语法格式)指令的语法格式 EORS EORS ,(2 2)指令举例)指令举例4 4EOREOR指令指令 SUB SUB(SubtractSubtract)指令从寄存器)指令从寄存器RnRn中减中减去去s

50、hifter_operandshifter_operand表示的数值,并将结果保表示的数值,并将结果保存到目标寄存器存到目标寄存器RdRd中,并根据指令的执行结果中,并根据指令的执行结果设置设置CPSRCPSR中相应的标志位。中相应的标志位。(1 1)指令的语法格式)指令的语法格式 SUBS SUBS ,(2 2)SUBSUB指令举例指令举例5 5SUBSUB指令指令 RSB RSB(Reverse SubtractReverse Subtract)指令从寄存器)指令从寄存器shifter_operandshifter_operand中减去中减去RnRn表示的数值,并将表示的数值,并将结果保存

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|