ARM微处理器体系结构_第1页
ARM微处理器体系结构_第2页
ARM微处理器体系结构_第3页
ARM微处理器体系结构_第4页
ARM微处理器体系结构_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.2 ARM微处理器体系结构2.2.1 数据类型2.2.2 ARM微处理器的工作状态2.2.3 ARM体系结构的存储器格式2.2.4 理器模式2.2.5 寄存器组织 1.ARM状态下的寄存器组织 2.Thumb状态下的寄存器组织2.2.6 异常2.2ARM微处理理器体系系结构2.2.1数数据类型型ARM处处理器支支持以下下数据类型型:字(Word):字的的长度为为32位位,而在在8位/16位位处理器器体系结结构中,字的长长度一般般为16位,请请注意区区分。半字(Half-Word):半字字的长度度为16位,与与8位/16位位处理器器体系结结构中字字的长度度一致。字节(Byte):各各种处理理

2、器体系系结构中中,字节节的长度度均为8位。2.2.2ARM微微处理器器的工作作状态从编程的的角度看看,ARM微处处理器的的工作状态态一般有两两种,并并可在两两种状态态之间切切换:ARM状状态,此此时处理理器执行行32位位的字对对齐的ARM指指令;Thumb状态态,此时时处理器器执行16位的的、半字字对齐的的Thumb指指令。ARM处处理器在在两种工工作状态态之间可可以切换:进入Thumb状态。当操作数数寄存器器的状态态位(位位0)为1时,执执行BX指令进进入Thumb状态。如果处处理器在在Thumb状状态进入入异常,则当异异常处理理(IRQ、FIQ、Undef、Abort和和SWI)返回时时,

3、自动动转换到到Thumb状状态。进入ARM状态态。当操作数数寄存器器的状态态位(位位0)为0时,执执行BX指令进进入ARM状态态。处理理器进行行异常处处理(IRQ、FIQ、Reset、Undef、Abort 和SWIARM状状态执行行)。在此此情况下下,把PC放放人异常常模式链链接寄存存器中。从异常常向量地地址开始始执行也也可以进进入ARM状态态。2.2.3ARM体体系结构构的存储储器格式式ARM体体系结构构将存储储器看作作是从零零地址开开始的字字节的线线性组合合。从零字节节到三字字节放置置第一个个存储的的字数据据,从第第四个字字节到第第七个字字节放置置第二个个存储的的字数据据,依次次排列。作

4、为32位的微微处理器器,ARM体系系结构所所支持的的最大寻寻址空间间为4GB。ARM体体系结构构可以用用两种方方法存储储字数据据,称为为大端格式式和小端格式式,具体说说明如下下。 大端端格式:字数据据的高字字节存储储在低地地址中,而字数数据的低低字节则则存放在在高地址址中。字地地址高地址低地址以大端格格式存储储字数据据 小端端格式:与大端端存储格格式相反反,在小小端存储储格式中中,低地地址中存存放的是是字数据据的低字字节,高高地址存存放的是是字数据据的高字字节。以小端格格式存储储字数据据高地址低地址字地地址2.2.4理理器模式式ARM微微处理器器支持7种运行行模式,分别为为:用户模式式(usr

5、):ARM处理器器正常的的程序执执行状态态。快速中断断模式(fiq):用用于高速速数据传传输或通通道处理理。外部中断断模式(irq):用用于通用用的中断断处理。管理模式式(svc):操作系系统使用用的保护护模式,系统复位位后的缺缺省模式式。1.指令令终止模模式(abt):指令令预取终终止时进进入该模模式。2.数据据访问终终止模式式(abt):当数据据访问终终止时进进入该模模式,可可用于虚虚拟存储储及存储储保护。指令未定定义模式式(und):支持硬硬件协处处理器指指令的软软件仿仿真系统模式式(sys):运行具具有特权权的操作作系统任任务。ARM微微处理器器的运行行模式可可以通过过软件改改变,也也

6、可以通通过外部部中断或或异常处处理改变变。大多数的的应用程程序运行行在用户户模式下下,当处处理器运运行在用用户模式式下时,某些被被保护的的系统资资源是不不能被访访问的。除用户模模式以外外,其余余的所有有6种模模式称为为非用户户模式或或特权模模式(Privileged Modes);其中除去去用户模模式和系系统模式式以外的的5种又又称为异异常模式式(ExceptionModes),常用于于处理中中断或异异常,以以及需要要访问受受保护的的系统资资源等情情况。处理器启启动时的的模式转转换图超级模式式(Supervisor)多种特权权模式变变化用户程序序的运行行模式复位后的的缺省模模式主要完成成各模式

7、式的堆栈栈设置,注意不不要进入入用户模模式一般为用用户模式式User处理器模模式2.2.5寄寄存器组组织如图2-4所所示,ARM微处理理器共有有37个个32位位寄存器器,其中中31个个为通用用寄存器器,6个个为状态态寄存器器。但是是这些寄寄存器不不能被同同时访问问,具体体哪些寄寄存器是是可编程程访问的的,取决决于微处处理器的的工作状状态及具具体的运运行模式式。但在在任何时时候,通通用寄存存器R0R14、程程序计数数器PC、一个个或两个个状态寄寄存器都都是可访访问的。1.ARM状状态下的的寄存器器组织(1)通通用寄寄存器(2)寄寄存器器R16(1)通通用寄寄存器通用寄存存器包括括R0R15,可以

8、以分为3类:未分组寄寄存器R0R7分组寄存存器R8R14程序计数数器PC(R15) 未分分组寄存存器R0R7在所有的的运行模模式下,未分组组寄存器器都指向向同一个个物理寄寄存器,它们未未被系统统用作特特殊的用用途,因因此,在在中断或或异常处处理进行行运行模模式转换换时,由由于不同同的处理理器运行行模式均均使用相相同的物物理寄存存器,可可能会造造成寄存存器中数数据的破破坏,这这一点在在进行程程序设计计时应引引起注意意。 分组组寄存器器R8R14对于分组组寄存器器,它们们每一次次所访问问的物理理寄存器器与处理理器当前前的运行行模式有有关。对于R8R12,每每个寄存存器对应应两个不不同的物物理寄存存

9、器,当当使用fiq模模式时,访问寄寄存器R8_fiqR12_fiq;当当使用除除fiq模式以以外的其其他模式式时,访访问寄存存器R8_usrR12_usr。对于R13、R14,每个寄寄存器对对应6个个不同的的物理寄寄存器,其中一一个是用用户模式式与系统统模式共共用,另另外5个个物理寄寄存器对对应于其其他5种种不同的的运行模模式。采用以下下记号来来区分不同的物物理寄存存器:R13_R14_其中,mode为以下下几种模模式之一一:usr、fiq、irq、svc、abt、und。寄存器R13在在ARM指令中中常用作作堆栈指指针,但但这只是是一种习习惯用法法,用户户也可使使用其他他的寄存存器作为为堆栈

10、指指针。而而在Thumb指令集集中,某某些指令令强制性性的要求求使用R13作作为堆栈栈指针。由于处理理器的每每种运行行模式均均有自己己独立的的物理寄寄存器R13,在用户户应用程程序的初初始化部部分,一一般都要要初始化化每种模模式下的的R13,使其其指向该该运行模模式的栈栈空间.这样,当当程序的的运行进进入异常常模式时时,可以以将需要要保护的的寄存器器放入R13所所指向的的堆栈,而当程程序从异异常模式式返回时时,则从从对应的的堆栈中中恢复,采用这这种方式式可以保保证异常常发生后后程序的的正常执执行。R14也也称做子子程序连连接寄存存器(Subroutine LinkRegister)或连接接寄存

11、器器LR。当执行BL子程程序调用用指令时时,R14中得得到R15(程程序计数数器PC)的备备份。其其他情况况下,R14用用作通用用寄存器器。与之类似似,当发发生中断断或异常常时,对对应的分分组寄存存器R14_svc、R14_irq、R14_fiq、R14_abt和和R14_und用来来保存R15的的返回值值。寄存器R14常常用于如如下的情情况:在每一种种运行模模式下,都可用用R14保存子子程序的的返回地地址,当当用BL或BLX指令令调用子子程序时时,将PC的当当前值复复制给R14,执行完完子程序序后,又又将R14的值值复制回回PC,即可完完成子程程序的调调用返回回。以上的描描述可用用指令完完成

12、:执行以下下任意一一条指令令:MOVPC,LR 或BXLR在子程序序入口处处使用以以下指令令将R14存入入堆堆栈:STMFDSP!,LR对应的,使用以以下指令令可以完完成子程程序返回回:LDMFDSP!,PCR14也也可作为为通用寄寄存器。 程序序计数器器PC(R15)寄存器R15用用作程序序计数器器(PC)。在在ARM状态下下,位1:0为0,位31:2用用于保存存PC;在Thumb状态下下,位0为为0,位位31:1用于保保存PC。虽然可以以用作通通用寄存存器,但但是有一一些指令令在使用用R15时有一一些特殊殊限制,若不注注意,执执行的结结果将是是不可预预料的。在ARM状态下下,PC的0和和1

13、位是是0,在在Thumb状状态下,PC的的0位是是0。R15虽虽然也可可用作通通用寄存存器,但但一般不不这么使使用,因因为对R15的的使用有有一些特特殊的限限制,当当违反了了这些限限制时,程序的的执行结结果是未未知的。由于ARM体系系结构采采用多级级流水线线技术,对于ARM指指令集而而言,PC总是是指向当当前指令令的下两两条指令令的地址址,即PC的值值为当前前指令的的地址值值加八个个字节。在ARM状态下下,任一一时刻可可以访问问以上所所讨论的的16个个通用寄寄存器和和12个状态态寄存器器。在非非用户模模式(特特权模式式)下下,则可可访问到到特定模模式分组组寄存器器,图2-4说说明在每每一种运运

14、行模式式下,哪哪一些寄寄存器是是可以访访问的。(2)寄寄存器器R16寄存器R16用用作CPSR(CurrentProgram StatusRegister,当当前程序序状态寄寄存器),CPSR可可在任何何运行模模式下被被访问,它包括括条件标标志位、中断禁禁止位、当前处处理器模模式标志志位,以以及其他他一些相相关的控控制和状状态位。每一种运运行模式式下又都都有一个个专用的的物理状状态寄存存器,称称为SPSR(Saved ProgramStatus Register,备份份的程序序状态寄寄存器),当异异常发生生时,SPSR用于保保存CPSR的的当前值值,从异异常退出出时则可可由SPSR来来恢复CP

15、SR。由于用户户模式和和系统模模式不属属于异常常模式,它们没没有SPSR,当在这这两种模模式下访访问SPSR时时,结果果是未知知的。程序状态态字参见见后面说说明。2.Thumb状态态下的寄寄存器组组织Thumb状态态下的寄寄存器集集是ARM状态态下寄存存器集的的一个子子集,程程序可以以直接访访问8个个通用寄寄存器(R7R0)、程序序计数器器(PC)、堆堆栈指针针(SP)、连连接寄存存器(LR)和和CPSR。同时,在在每一种种特权模模式下都都有一组组SP、LR和和SPSR。图2-4表明Thumb状态下下的寄存存器组织织。(1)Thumb状状态下的的寄存器器组织与与ARM状态下下的寄存存器组织织的

16、关系系Thumb状态态下和ARM状状态下的的R0R7是是相同的的Thumb状态态下和ARM状状态下的的CPSR和所所有的SPSR是相同同的Thumb状态态下的SP对应应于ARM状态态下的R13Thumb状态态下的LR对应应于ARM状态态下的R14Thumb状态态下的程程序计数数器对应应于ARM状态态下的R15以上的对对应关系系如图2-5所所示。(2)访访问THUMB状态态下的高高位寄存存器(Hi-registers)在Thumb状状态下,高位寄寄存器R8R15并并不是标标准寄存存器集的的一部分分,但可可使用汇汇编语言言程序有有限制地地访问这这些寄存存器,将将其用作作快速的的暂存器器.使用带特特

17、殊变量量的MOV指指令,数数据可以以在低位位寄存器器和高位位寄存器器之间进进行传送送,高位位寄存器器的值可可以使用用CMP和ADD指令令进行比比较或加加上低位位寄存器器中的值值。(3)程程序状状态寄存存器ARM体体系结构构包含一一个当前前程序状状态寄存存器(CPSR)和5个备份份的程序序状态寄寄存器(SPSRs)。备份的程程序状态态寄存器器用来进进行异常常处理,其功能能包括:保存ALU中的的当前操操作信息息。控制允许许和禁止止中断。设置处理理器的运运行模式式。程序状态态寄存器器每一位位的安排排如图2-6所示示. 条件件码标志志(ConditionCode Flags)N、Z、C、V均为条条件码

18、标标志位。它们的的内容可可被算术术或逻辑辑运算的的结果所所改变,并且可可以决定定某条指指令是否否被执行行。在ARM状态下下,绝大大多数的的指令都都是有条条件执行行的。在在Thumb状状态下仅有分分支指令令是有条条件执行行的。条条件码标标志各位位的具体体含义如表2-1所示示。 控制制位PSR的的低8位位(包括括I、F、T和和M4:0)称为为控制位位,当发发生异常常时这些些位可以以被改变变。如果果处理器器运行特特权模式式,这些些位也可可以由程程序修改改。中断禁止止位I、FI1禁禁止止IRQ中断F1禁禁止止FIQ中断T标志位位:该位位反映处处理器的的运行状状态。对于ARM体系系结构v5及以以上版本本

19、的T系系列处理理器,当当该位为为1时,程序运运行于Thumb状态态,否则则运行于于ARM状态。对于ARM体系系结构v5及以以上版本本的非T系列处处理器,当该位位为1时时,执行行下一条条指令以以引起未未定义的的指令异异常;当当该位为为0时,表示运运行于ARM状状态。运行模式式位M4:0:M0、M1、 M2、M3、M4是模式式位。这这些位决决定了处处理器的的运行模模式。具具体含义义如表2-2所示示。由表2-2可知知,并不不是所有有的运行行模式位位的组合合都是有有效的,其他的的组合结结果会导导致处理理器进入入一个不不可恢复复的状态态。 保留留位PSR中中的其余余位为保保留位,当改变变PSR中的条条件

20、码标标志位或或者控制制位时,保留位位不要改改变,在在程序中中也不要要使用保保留位来来存储数数据。保保留位将将用于ARM版版本的扩扩展。2.2.6异异常异常(exception)由内内部或外外部源产产生以引引起处理理器处理理一个事事件。例例如,外外部中断断或试图图执行未未定义指指令都会会引起异异常。在在处理异异常之前前,处理理器状态态必须保保留,以以便在异异常处理理程序完完成后,原来的的程序能能够重新新执行。同一时时刻可能能出现多多个异常常。ARM支支持7种类型的异常。表2-3列出了异异常的类类型以及及处理这这些异常常的处理理器模式式。异常常出现后后,强制制从异常常类型对对应的固固定存储储器地址

21、址开始执执行程序序。这些些固定的的地址称称为异常常向量(Exception Vectors)。当异常出出现时,异常模模式分组组的R14和SPSR用于保保存状态态,即R14_= returnlinkSPSR_=CPSRCPSR4:0=exceptionmodenumberCPSR5=0*在在ARM状态执执行*if = Reset or FIQthenCPSR6= 1*禁禁止快速速中断*否则则CPSR6不变变*CPSR7 =1*禁止止正常中中断*/PC= exceptionvectoraddress当处理异异常返回回时,将将SPSR传送送到CPSR,R14传送到到PC。这可用用两种方方法自动动完成

22、,即使用带S位的数数据处理理指令,将PC作为目目的寄存存器;使用带恢恢复CPSR的的多加载载指令。复位位处理器上上一旦有有复位输输入,ARM处处理器立立刻停止止执行当当前指令令。复位位完成下下列操作作R14_svc=UNPREDICTABLEvalueSPSR_svc=UNPREDICTABLE valueCPSR4:0=0b10011/*进入入管理模模式*/CPSR50/*在在ARM状态下下执行*/CPSR61/*禁禁止快速速中断*/CPSR71/*禁禁止正常常中断*/Ifhigh vectorsconfiguredthenPC=0 xFFFF0000ElsePC=0 x00000000复位

23、后,ARM处理器器在禁止止中断的的管理模模式下,从地址址0 x00000000或OxFFFF0000开始执执行指令令。未定定义指令令异常当ARM处理器器执行协协处理器器指令时时,它必必须等待待任一外外部协处处理器应应答后,才能真真正执行行这条指指令。若若协处理理器没有有响应,就会出出现未定定义指令令异常。若试图执执行未定定义的指指令,也也会出现现未定义义指令异异常。未定义指指令异常常可用于于没有物物理协处处理器(硬件)的系统统上,对对协处理理器进行行软件仿仿真,或或在软件件仿真时时进行指指令集扩扩展。当未定义义指令异异常出现现时,执执行下列列操作:R14_und=addressofnextin

24、structionaftertheundefined instructionSPSR_und=CPSRCPSR4:0=0b11011/*进入入未定义义模式*/CPSR5=0/*在在ARM状态执执行*/*CPSR6不不变*/CPSR7=1/*禁禁止正常常中断*/Ifhigh vectorsconfiguredthenPC=0 xFFFF0004ElsePC=0 x00000004在仿真未未定义指指令后,使用下下列指令令返回,即MOVSPC,R14上面的指指令恢复复PC(从R14_und)和CPSR(从SPSR_und),并并返回到到未定义义指令后后的下一一条指令令。3软件件中断异异常软件中断断指

25、令SWI(SoftWareInterrupt lnstruction)进入入管理模模式,以以请求特特定的管管理(操操作系统统)函数数。当执执行SWI时,完成下下列操作作:R14_svc=addressofnextinstructionaftertheSWI instructionSPSR_svc=CPSRCPSR4:0=0b10011/*进入入管理模模式*/CPSR5=0/*在在ARM状态执执行*/*CPSR6不不变*/CPSR7=1/*禁禁止正常常中断*/Ifhigh vectorsconfiguredthenPC=0 xFFFF0008ElesPC=0 x00000008完成SWI操作作后

26、,使使用下列列指令恢恢复PC(从R14_svc)和CPSR(从SPSR_svc),并返回回到SWI指令令后的下下一条指指令,即即MOVSPC,R144.预预取中止止(取指指令存储储器中止止)存储器系系统发出出存储器器中止(abort)信号。响应取取指激活活的中止止标记所所取的指指令无效效。若处理器器试图执执行无效效指令,则产生生预取中中止异常常。若指令未未执行(例如,指令在在流水线线中发生生了转移移),则则不发生生预取中中止。在在ARMv5及及以上版版本中,执行BKPT指令也也会产生生预取中中止异常常。当试图执执行一条条中止的的指令时时,将执执行下列列操作:R14_abt=addressoft

27、he abortedinstruction+4SPSR_abt=CPSRCPSR4:0=0b10111/*进入入中止模模式*/CPSR5=0/*在在ARM状态执执行*/*CPSR 6不变变*/CPSR7=1/*禁禁止正常常中断*/Ifhigh vectorsconfiguredthenPC=0 xFFFF000CElsePC=0 x0000000C确定中止止原因后后,使用用下面指指令从中中止模式式返回,即SUBSPC,R14,#4上面的指指令恢复复PC(从R14_abt)和CPSR(从SPSR_abt),并并返回到到中止的的指令。数据据中止(数据访访问存储储器中止止)存储器系系统发出出存储器器

28、中止信信号。响响应数据据访问(加载或或存储)激活的的中止标标记数据据为无效效。在下下面的任任何指令令或异常常改变CPU状状态之前前,数据据中止异异常发生生。执行行下列操操作:R14_abt=addressofthe abortedinstruction+8SPSR_abt=CPSRCPSR4:0=0b10111/*进入入中止模模式*/CPSR5=0/*在在ARM状态执执行*/*CPSR 6不变变*/CPSR7=1/*禁禁止正常常中断*/Ifhigh vectorsconfiguredthenPC=0 xFFFF0010ElsePC=0 x00000010确定中止止原因后后,使用用下列指指令从中

29、中止模式式返回,即SUBSPC,R14,#8上面的指指令恢复复PC(从R14_abt)和CPSR(从SPSR_abt),并返回回重新执执行中止止的指令令。若中中止的指指令不需需要重新新执行,则使用用下面的的指令:SUBSPC,R14,#4.中中断请求求(IRQ)异异常通过处理理器上的的IRQ输入引引脚,由由外部产产生IRQ异常常。IRQ异常常的优先先级比FIQ异异常的低低。当进进入FIQ处理理时,会会屏蔽掉掉IRQ异常。若CPSR的I位置为为1,则则禁止IRQ中中断。若若I位清清零,则则ARM在指令令执行完完之前检检查IRQ输入入。只能在特特权模式式下改变变I位,当检测测到IRQ时,执行下下列

30、操作作:R14_irq=addressofthe abortedinstruction+4SPSR_irq=CPSRCPSR4:0=0b10010/*进入入IRQ模式*/CPSR5=0/*在在ARM状态执执行*/*CPSR 6不变变*/CPSR7=1/*禁禁止正常常中断*/Ifhigh vectorsconfiguredthenPC=0 xFFFF0018ElsePC=0 x00000018使用下面面的指令令从中断断服务返返回,即即SUBSPC,R14,#4上面的指指令恢复复PC(从R14_irq)和CPSR(从SPSR_irq),并并继续执执行被中中断的程程序。快速速中断请请求(FIQ)异常

31、通过处理理器上的的FIQ输入引引脚,由由外部产产生FIQ异常常。FIQ被设设计成支支持数据据传送和和通道处处理,并并有足够够的私有有(private)寄存器器,从而而在这样样的应用用中可避避免对寄寄存器保保存的需需求,减减少了上上下文切切换的总总开销。当CPSR的F位置1时,禁禁止快速速中断。若F位位清零,则ARM在执执行指令令时检查查FIQ输入。只能在在特权模模式下改改变F位位,当检检测到FIQ时时,执行行下列操操作,即即R14_fiq=addressofthe abortedinstruction+4SPSR_fiq=CPSRCPSR4:0=0b10001/*进入入FIQ模式*/CPSR5

32、=0/*在在ARM状态执执行*/CPSR6=1/*禁禁止快速速中断*/CPSR7=1/*禁禁止正常常中断*/Ifhigh vectorsconfiguredthenPC=0 xFFFF001CElsePC=0 x0000001C使用下面面的指令令从中断断服务返返回,即即SUBSPC,R14,#4上面的指指令恢复复PC(从R14_fiq)和CPSR(从SPSR_fiq),并并继续执执行被中中断的程程序。FIQ向向量放在在最后,允许FIQ异异常处理理程序直直接放在在地址0 x0000001C或0 xFFFF001C开开始的位位置,而而不需要要由向量量的分支支指令执执行跳转转到异常常处理程程序。8.

33、异异常优先先级异常的优优先级如如表2-4所列列。 优先级异常优先级异常1(最高)复位4IRQ2数据中止5预取中止3FIQ6(最低)未定义指信、SWI9.高高端向量量一些ARM实现现允许异异常向量量的定位位由32位地址址空间低低端的正正常地址址范围Ox00000000Ox000000lC,移到接接近于地地址空间间高端的的另一地地址范围围0 xFFFF00000 xFFFF00lC。这些改变变后的地地址位置置称为高高端向量量。由IMPLEMENTATIONDEFINED决定是是否支持持高端向向量。如如果支持持,则在在输入硬硬件配置置时,选选择是使使用正常常向量还还是高端端向量。10.异异常的的进入

34、和和退出只要正常常的程序序流程被被暂时停停止,则则异常发发生,例例如服务务外部的的中断。在异常被被处理之之前,必必须保存存当前的的处理器器状态,以便当当处理程程序完成成后,原原来的程程序能重重新开始始。如果几种种异常同同时发生生,则对对它们按按固定的的次序处处理,可可参考异异常优先先级(1)进进入异异常的操操作处理一个个异常时时,ARM7TDMI用于:将下一一条指令令的地址址保存在在相应的的LR寄寄存器中中。如果异常常是从ARM状状态进入入,则保保存在LR寄存存器中的的是下一一条指令令的地址址(当前前PC+4或PC+8,取决决于异常常,见表表2-5)。如果异常常是从Thumb状态态进入,则保存

35、存在LR寄存器器中的是是当前PC的偏偏移值。它能使使程序在在异常处处理返回回后从正正确的位位置重新新开始。这就意味味异常处处不需要要确定异异常是从从何种状状态进入入的。例例如在软软件中断断(SWI)情情况下,“MOVSPC,R14_svc”,总是返返回到下下一条指指令,而而与SWI是在在ARM还是Thumb状态态下执行行的无关关。将CPSR复复制到相相应的SPSR中。迫使CPSR模式位位设置成成取决于于异常的的值。迫使PC从相相关的异异常向量量中取下下一条指指令。也也可以设设置中断断禁止位位来阻止止其它无无法处理理的异常常嵌套。如果在异异常发生生时处理理器是在在Thumb状状态下,那么当当用中

36、断断异常向向量地址址加载PC时,自动切切换进入入ARM状态。(2)退退出异异常的操操作在完成异异常处理理后:将LR寄寄存器的的值减去去相应的的偏移量量(偏移移量根据据异常不不同而不不同),送到PC中;将SPSR复制制回CPSR中中;清除中断断禁止位位标志。另外,不不需要显显式切换换回Thumb状态,因为从从SPSR中将将CPSRT位自动动设置为为异常前前的原值值。(3)进进入和和退出异异常小结结表2-5中总结了了进入异异常处理理时保存存在相应应的R14寄存存器中的的PC值值,以及及在退出出异常处处理时推推荐使用用的指令令。PC是具具有预取取中止的的BL/SWI/未定定义指令令所取的的地址;PC

37、是从从FIQ或IRQ取得得优先权权后不能能执行的的指令的的地址;PC是产产生数据据中止的的加载或或存储指指令的地地址;复位时保保存在R14_svc中的值值是不可可预知的的。R0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7R8R8-fiqR8R8R8R8R9R9-fiqR9R9R9R9R10R10-fiqR10R10R10R10R11R11-fiqR11R11R11R11R12R12-fiqR12R12R12R12R13R13-fiq13-svc13-a

38、dt13-itq13-undR14R14-fiq14-svc14-adt14-itq14-undR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)Systerm&UserFIQSupervisterAboutIRGUndefinedARM状状态下的的积存器器组织CPSRCPSRCPSRCPSRCPSRCPSRSPSR-foqSPSR-svcSPSR-abtSPSR-inqSPSR-und返回图 2-5Thumb状状态下的的寄存器器组织 R0 R1 R2 R3 R4 R5 R6 R7Stack Point (SP)Link Register (LR)Progra

39、m Counter (PC) CPSR SPSR RO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12Stack Point (R13)Link Register (R14)Program Counter (R15) CPSR SPSRThumb状态态ARM状状态返回返回标志位含义N当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零ZZ=1表示运算的结果为零;Z=0表示运算的结果为非零C可以有4种方法设置C的值;加法运算(包括比较指令CMP);当运算结果产生了进位时(无符号数溢出),C=1,否则C=0;减法运算(包括比较指令CMP);当运算时产生了借位(无符号数溢出),C=0,否则C=1;对于包含移位操作的非加/减运算指令,C为移出值的最后一位;对于其它的非加/减运算指令,C的值通常不改变条件码的的具体含含义N当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零ZZ=1表示运算的结果为零;Z=0表示运算的结果为非零C可以有4种方法设置C的值;加法运算(包括比较指令CMP);当运算结果产生了进位时(无符号数溢出),C=1,否则C=0;减法运算(包括比较指令CMP);当运算时产生了借位(无符号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论