n3_ARM嵌入式微处理器体系结构指令_第1页
n3_ARM嵌入式微处理器体系结构指令_第2页
n3_ARM嵌入式微处理器体系结构指令_第3页
n3_ARM嵌入式微处理器体系结构指令_第4页
n3_ARM嵌入式微处理器体系结构指令_第5页
已阅读5页,还剩244页未读 继续免费阅读

下载本文档

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

文档简介

1、1嵌入式系统原理与应用嵌入式系统原理与应用第三讲第三讲 ARMARM嵌入式处理器体系结构与指嵌入式处理器体系结构与指令系统令系统2本节提要本节提要ARM7TDMI系统结构系统结构 ARM处理器工作模式处理器工作模式S3C44B0X简介简介 ARM中断处理中断处理ARM系统启动过程系统启动过程ARM 微处理器的指令系统微处理器的指令系统3ARM7TDMI系统内部结构图系统内部结构图 lARM7TDMI处理处理器部件和主要信号器部件和主要信号路径的框图如图所路径的框图如图所示。示。l它内部由处理器核它内部由处理器核、用于边界扫描的、用于边界扫描的TAP控制器和在线控制器和在线仿真器仿真器ICE组成

2、。组成。双向数据总线双向数据总线D31:0被分割被分割成单向输入和输出成单向输入和输出总线,以便于与外总线,以便于与外部存储器兼容。部存储器兼容。 4ARM7TDMI模块地址寄存器寄存器组31*32位寄存器(6个状态寄存器)地址增量器乘法器桶形移位器32位ALU写数据寄存器指令流水线读数据寄存器Thumb指令译码器指令译码和逻辑控制ADDR31:0CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE1:0PROT1:0TRANS1:0DBG输出DBG输入CP控制CP握手WDATA31:0RDATA31:0扫描调试控制A总线B总线ALU总线增量器总线P

3、C总线ARM7TDMI 的模块和内核框图的模块和内核框图5ARM7TDMI功能信号图功能信号图 ARM7TDMI6本节提要本节提要ARM7TDMI系统结构系统结构 ARM处理器工作模式处理器工作模式S3C44B0X简介简介 ARM中断处理中断处理ARM系统启动过程系统启动过程ARM 微处理器的指令系统微处理器的指令系统73.2.1 ARM和和Thumb状态状态lARM体系结构在体系结构在V4T及其以上版本定义了称为及其以上版本定义了称为Thumb指令集的指令集的16位指令集。位指令集。Thumb指令集的功能是指令集的功能是32位位ARM指令集的功能子集。指令集的功能子集。l工作在工作在Thum

4、b状态下的处理器译码和执行状态下的处理器译码和执行Thumb指指令集。工作在令集。工作在ARM状态下的处理器译码和执行状态下的处理器译码和执行ARM指令集。必须确保处理器不接受对当前状态来说为错指令集。必须确保处理器不接受对当前状态来说为错误指令集的指令。每个指令集都包括切换处理器状态误指令集的指令。每个指令集都包括切换处理器状态的指令。处理器初始状态默认是的指令。处理器初始状态默认是ARM状态状态l注意:两个状态之间的切换并不影响处理器模式或寄存器内容。8lTHUMBTHUMB指令集指令集 ( T)( T)uTHUMB THUMB 指令集指令集: 32: 32位位ARMARM指令集的子集,按

5、指令集的子集,按1616位指位指令重新编码令重新编码u代码尺寸小代码尺寸小 ( up to 35 % compression)( up to 35 % compression)u简化设计简化设计THUMBTHUMB指令的特点:指令的特点:1 1、THUMBTHUMB代码所需空间为代码所需空间为ARMARM代码的代码的70%70%;2 2、THUMBTHUMB代码所使用的指令数比代码所使用的指令数比ARMARM代码多代码多40%40%;3 3、用、用3232位存储器,位存储器,ARMARM代码比代码比THUMBTHUMB代码快代码快40%40%;4 4、用、用1616位存储器,位存储器,THUM

6、BTHUMB代码比代码比ARMARM代码快代码快45%45%;5 5、使用、使用THUMBTHUMB代码,外部存储器功耗比代码,外部存储器功耗比ARMARM代码少代码少30%30%9;从Arm状态切换到Thumb状态 LDR R0,=Lable+1 BX R0;从Thumb状态切换到ARM状态 LDR R0,=Lable BX R0地址最低位为1,表示切换到Thumb状态地址最低位为0,表示切换到ARM状态跳转地址标号l处理器状态切换:使用处理器状态切换:使用BX指令将指令将ARM7TDMI内核的内核的操作状态在操作状态在ARM状态和状态和Thumb状态之间进行切换(状态之间进行切换(详见第详

7、见第4章)章) ,程序如下所示。,程序如下所示。103.2.2 ARM处理器模式处理器模式 除了用户模式以外,其他除了用户模式以外,其他6种处理器模式可以称为特权模式种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。其中除了系统模式外的其他地进行处理器模式的切换。其中除了系统模式外的其他5种特权种特权模式又称为异常模式。模式又称为异常模式。 ARM处理器运行模式处理器运行模式处理器模式处理器模式描描 述述用户模式(用户模式(User,usrUser,usr)正常程序执行的模式正常程序执

8、行的模式快速中断模式(快速中断模式(FIQ,fiqFIQ,fiq)用于高速数据传输和通道处理用于高速数据传输和通道处理外部中断模式(外部中断模式(IRQ,irqIRQ,irq)用户通常的中断使用用户通常的中断使用管理模式(管理模式(Supervisor,sveSupervisor,sve)供操作系统使用的一种保护模式供操作系统使用的一种保护模式数据访问中止模式(数据访问中止模式(Abort,abtAbort,abt)用于虚拟存储及存储保护用于虚拟存储及存储保护未定义指令中止模式未定义指令中止模式(Undefined,undUndefined,und)用于支持通过软件仿真硬件的协处用于支持通过软

9、件仿真硬件的协处理器理器系统模式(系统模式(System,sysSystem,sys)用于运行特权级的操作系统任务用于运行特权级的操作系统任务11处理器模式处理器模式说明说明备注备注 用户用户 (usr)(usr)正常程序执行模式正常程序执行模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)(sys)运行操作系统的特权任务运行操作系统的特权任务与用户模式类似,但具有可以直与用户模式类似,但具有可以直接切换到其它模式等特权接切换到其它模式等特权 快中断快中断 (fiq)(fiq)支持高速数据传输及通道支持高速数据传输及通道处理处理FIQFIQ异常响应时进入此模式异常响应时进入

10、此模式 中断中断 (irq)(irq)用于通用中断处理用于通用中断处理IRQIRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc)(svc)操作系统保护模式操作系统保护模式系统复位和软件中断响应时进入系统复位和软件中断响应时进入此模式此模式 中止中止 (abt)(abt)用于支持虚拟内存和用于支持虚拟内存和/ /或或存储器保护存储器保护在在ARM7TDMIARM7TDMI没有大用处没有大用处 未定义未定义 (und)(und)支持硬件协处理器的软件支持硬件协处理器的软件仿真仿真未定义指令异常响应时进入此模未定义指令异常响应时进入此模式式3.2.2 ARM处理器模式处理器模式l处理

11、器处理器7种模式种模式123.2.2 ARM处理器模式处理器模式l特权模式特权模式处理器模式处理器模式说明说明备注备注 用户用户 (usr)正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特用于支持操作系统的特权任务等权任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通支持高速数据传输及通道处理道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异

12、常响应时进入此模式 管理管理 (svc)操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软支持硬件协处理器的软件仿真件仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。

13、未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断中断 (irq) 快中断快中断 (fiq) 系统系统 (sys)133.2.2 ARM处理器模式处理器模式l异常模式异常模式处理器模式处理器模式说明说明备注备注 用户用户 (usr)正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特权用于支持操作系统的特权任务等任务等与用户模式类似,但具有可以直与用户模式类似,但具有可以直接切换到其它模式等特权接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通道支持高速数据传输及通道处理处理FIQ异常响

14、应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc)操作系统保护代码操作系统保护代码系统复位和软件中断响应时进入系统复位和软件中断响应时进入此模式此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或存或存储器保护储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软件支持硬件协处理器的软件仿真仿真未定义指令异常响应时进入此模未定义指令异常响应时进入此模式式 未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断中断

15、(irq) 快中断快中断 (fiq) 这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。143.2.2 ARM处理器模式处理器模式l用户和系统模式用户和系统模式处理器模式处理器模式说明说明备注备注 用户用户 (usr)正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特权任务等用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到与用户模式类似,但具有可以直接切换到其它模式等特

16、权其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通道处理支持高速数据传输及通道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc)操作系统保护代码操作系统保护代码系统复位和软件中断响应时进入此模式系统复位和软件中断响应时进入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或存储器保或存储器保护护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软件仿真支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式未定义

17、指令异常响应时进入此模式 这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。 系统系统 (sys) 用户用户 (usr)15ARM寄存器介绍寄存器介绍 16寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1

18、R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R10_fiqR10_fiqR11(FP,v8)R11(FP,v8)R11R11R11_fiqR11_fiqR12(IP)R12(IP)R12R12R12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR

19、13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSRCPSRCPSRCPSRSPSRSPSR无无SPSR_abtSPSR_abtSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiqSPSR_fiqSPSR

20、_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。ARM状态各模式下的寄存器状态各模式下的寄存器17寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理

21、中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R10_fiqR10_fiqR11(FP,v8)R11(FP,v8)R11R11R1

22、1_fiqR11_fiqR12(IP)R12(IP)R12R12R12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSRCPSRCPSRCPSRSPSRSPSR无无SPSR_abtSPSR_abtSP

23、SR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。一般的通用寄存器18寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器

24、用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R10_fiqR10_fiqR11(FP,v8)R11(FP

25、,v8)R11R11R11_fiqR11_fiqR12(IP)R12(IP)R12R12R12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSRCPSRCPSRCPSRSPSRSPSR无无SPSR_a

26、btSPSR_abtSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。一般的通用寄存器19寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问

27、的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R10_fiqR10_fiqR11(FP,v8)R1

28、1(FP,v8)R11R11R11_fiqR11_fiqR12(IP)R12(IP)R12R12R12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSRCPSRCPSRCPSRSPSRSPSR无无SP

29、SR_abtSPSR_abtSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器一般的通用寄存器20寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称

30、中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R1

31、0_fiqR10_fiqR11(FP,v8)R11(FP,v8)R11R11R11_fiqR11_fiqR12(IP)R12(IP)R12R12R12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSR

32、CPSRCPSRCPSRSPSRSPSR无无SPSR_abtSPSR_abtSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。一般的通用寄存器21寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理

33、管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R10_fiqR10_fiqR11(FP,v8)R11(FP,v8)R11R11

34、R11_fiqR11_fiqR12(IP)R12(IP)R12R12R12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSRCPSRCPSRCPSRSPSRSPSR无无SPSR_abtSPSR_abt

35、SPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiq寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13一般的通用寄存器22寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程

36、序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R10_fiqR10_fiqR11(FP,v8)R11(FP,v8)R11R11R11_fiqR11_fiqR12(IP)R12(IP)R12R12R

37、12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSRCPSRCPSRCPSRSPSRSPSR无无SPSR_abtSPSR_abtSPSR_abtSPSR_abtSPSR_undSPSR_undSPS

38、R_irqSPSR_irqSPSR_fiqSPSR_fiq寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。堆栈指针寄存器R13(SP)23寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3

39、R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R10_fiqR10_fiqR11(FP,v8)R11(FP,v8)R11R11R11_fiqR11_fiqR12(IP)R12(IP)R12R12R12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_u

40、ndR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSRCPSRCPSRCPSRSPSRSPSR无无SPSR_abtSPSR_abtSPSR_abtSPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiqR14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用

41、于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。链接寄存器R14(LR)24Lable程序A程序BR14链接寄存器R14(LR)lR14(LR)寄存器与子程序调用)寄存器与子程序调用BL Lable地址A?MOV PC,LRR14(地址A)Lable?1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14(LR);3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;25链接寄存器R14(LR) 异常发生时,程序要跳转至异常服务程

42、序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。l当发生异常嵌套时,这些异常之间可能会发生冲突。l例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。26链接寄存器R14(LR)lR14寄存器注意要点寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个

43、地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏R14_irq27链接寄存器R14(LR)lR14寄存器注意要点寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AaB.XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏IRQ模式下

44、的程序BareturnB.XA地址B地址B4. 如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;5. 硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;R14_irq 被破坏6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;returnreturn 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。28寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定

45、义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0(a1)R0R0R1(a2)R1(a2)R1R1R2(a3)R2(a3)R2R2R3(a4)R3(a4)R3R3R4(v1)R4(v1)R4R4R5(v2)R5(v2)R5R5R6(v3)R6(v3)R6R6R7(v4)R7(v4)R7R7R8(v5)R8(v5)R8R8R8_fiqR8_fiqR9(SB,v6)R9(SB,v6)R9R9R9_fiqR9_fiqR10(SL,v7)R10(SL,v7)R10R10R10_fiqR10_fiqR11(FP,v8)R11(FP,v8)R11R11R11_fiqR

46、11_fiqR12(IP)R12(IP)R12R12R12_fiqR12_fiqR13(SP)R13(SP)R13R13R13_svcR13_svcR13_abtR13_abtR13_undR13_undR13_irqR13_irqR13_fiqR13_fiqR14(LR)R14(LR)R14R14R14_svcR14_svcR14_abtR14_abtR14_undR14_undR14_irqR14_irqR14_fiqR14_fiqR15(PC)R15(PC)R15R15状态寄状态寄存器存器CPSRCPSRCPSRCPSRSPSRSPSR无无SPSR_abtSPSR_abtSPSR_abt

47、SPSR_abtSPSR_undSPSR_undSPSR_irqSPSR_irqSPSR_fiqSPSR_fiq 寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。程序计数器R15(PC)29程序计数器R15(PC)LDR R0,PC?PCPC-4PC-8正在执行正在译码正在取指流水线状态地址程序代码l读读R15的限制的限制l正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令

48、总是以字为单位,所以R15寄存器的最低两位总是为0。30程序计数器R15(PC)l读读R15的限制的限制l 当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。l所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。计算偏移量(PC值和当前指令地址的差)程序代码:SUBR1,PC,#4;R1=下面STR指令的地址STRPC,R0;保存STR指令地址+偏移量LDRR0,R0;然后重装SUBR0,R

49、0,R1;计算偏移量04812ARM状态31程序计数器R15(PC) l写写R15的限制的限制l正常操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。l 由于ARM指令以字节为边界,因此写入R15的值最低两位通常为0b00。具体的规则取决于内核结构的版本:l在ARM结构V3版及以下版本中,写入R15的值的最低两位被忽略,因此跳转地址由指令的实际目标地址(写入R15的值)和0 xFFFFFFFC相与得到;l在ARM结构V4版及以上版本中,写入R15的值的最低两位为0,如果不是,结果将不可预测。32寄存器类寄存器类别别寄存器在汇编中寄存器在汇编中的名

50、称的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄存通用寄存器和程序器和程序计数器计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_

51、abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存状态寄存器器CPSRCPSRSPSR无无SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。程序状态寄存器CPSR33程序状态寄存器(程序状态寄存器(PSR)l CPSR(当前程序状态寄存器)可以在任何处理器模式下被访(当前程序状态寄存器)可以在任何处理器模式下被访问。每一种模式下都有一个专

52、用的物理状态寄存器,称为问。每一种模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常退出这个寄存器用于存放当前程序状态寄存器的内容。在异常退出时,可以用时,可以用SPSR中保存的值来恢复中保存的值来恢复CPSR。 NZCV IM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 0条件代码标志保留控制位溢出标志 Overflow进位或借位扩展 Carry零 Zero负或小于 NegativeIRQ禁止 I

53、nterruptFIQ禁止 Fast状态位 Thumb模式位 ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式341)条件标志位)条件标志位lN(Negative)、)、Z(Zero)、)、C(Carry)及)及V(oVerflow)统称为条件标志位。)统称为条件标志位。标标 志志含含 义义N本位设置成当前指令运算结果的本位设置成当前指令运算结果的bit31的值的值当两个补码表示的有符号整数运算时,当两个补码表示的有符号整数运算时,N1表示运算的结果为负数,表示运算的结果为负数,N0 表示结果为正数或零表示结果为正数或零ZZ1表示运算结果是表示运算结果是0,Z0表示运算结果不是零

54、表示运算结果不是零对于对于CMP指令,指令,Z1表示进行比较的两个数大小相等表示进行比较的两个数大小相等C 在加法指令中(包括比较指令在加法指令中(包括比较指令CMN),结果产生进位了,则),结果产生进位了,则C1,表,表示无符号数运算发生上溢出,其他情况下示无符号数运算发生上溢出,其他情况下C0 在减法指令中(包括比较指令在减法指令中(包括比较指令CMP),结果产生借位了,则),结果产生借位了,则C0,表示,表示无符号数运算发生下溢出,其他情况下无符号数运算发生下溢出,其他情况下C1 对于包含移位操作的非加对于包含移位操作的非加/减法运算指令,减法运算指令,C中包含最后一次被溢出的位中包含最

55、后一次被溢出的位的数值,对于其他非加的数值,对于其他非加/减法运算指令,减法运算指令,C位的值通常不受影响位的值通常不受影响V 对于加对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,号数时,V1表示符号位溢出表示符号位溢出, 其他的指令通常不影响其他的指令通常不影响V位位352)Q标志位标志位l在在ARM v5的的E系列处理器中,系列处理器中,CPSR的的bit27称为称为Q标志位,主要用于指示增强的标志位,主要用于指示增强的DSP指令是否发生了溢指令是否发生了溢出,同样的,出,同样的,SPSR的的bit27也称为

56、也称为Q标志位,用于在标志位,用于在异常中断发生时保存和恢复异常中断发生时保存和恢复CPSR中的中的Q标志位。标志位。363) CPSR中的控制位中的控制位CPSR的低的低8位位I、F、T及及M4:0统称为控制位,当异常中断发生时这些统称为控制位,当异常中断发生时这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。l中断禁止位中断禁止位当当I1时禁止时禁止IRQ中断。中断。当当F1时禁止时禁止FIQ中断。中断。 通常一旦进入中断服务程序可以通过置位通常一旦进入中断服务程序可以通过置位I和和F来禁止中断,但是在来禁止中断,但

57、是在本中断服务程序退出前必须恢复原来本中断服务程序退出前必须恢复原来I、F位的值。位的值。lT控制位控制位l用来控制指令执行的状态,即说明本指令是用来控制指令执行的状态,即说明本指令是ARM指令还是指令还是Thumb指令。指令。对于不同版本的对于不同版本的ARM处理器,处理器,T控制位的含义是有些不同的。控制位的含义是有些不同的。对于对于ARM v4及更高版本的及更高版本的T系列处理器,系列处理器,T控制位含义如下。控制位含义如下。 当当T0,表示执行,表示执行ARM指令。指令。当当T1,表示执行,表示执行Thumb指令。指令。37 M 控制位控制位M4:0处理器模式处理器模式可访问的寄存器可

58、访问的寄存器 0b10000UserPC,R14R0,CPSR 0b10001FIQPC,R14_fiqR8_fiq,R7R0,CPSR,SPSR_fiq 0b10010IRQPC,R14_irqR13_irq,R12R0,CPSR,SPSR_irq 0b10011SupervisorPC,R14_svcR13_svc,R12R0,CPSR,SPSR_svc 0b10111AbortPC,R14_abtR13_abt,R12R0,CPSR,SPSR_abt 0b11011UndefinedPC,R14_undR13_und,R12R0, CPSR, SPSR_und 0b11111System

59、PC,R14R0,CPSR(ARM v4及更高版本)及更高版本)38 R1 R2 R3 R4 R5 T humb R6 R7 ( C PSR ) ( SPSR ) R1 R2 R3 R4 R5 A R M R6 R7 R8 ( C PSR ) ( SPSR ) R9 R10 R11 R12 R0 R0 状态 状态 堆栈指针(SP) 连接寄存器(LR) 程序计数器(PC) 当前程序状态寄存器 被保存程序状态寄存器 堆栈指针(R13) 连接寄存器(R14) 程序计数器(R15) 当前程序状态寄存器 被保存程序状态寄存器 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12

60、R0 堆栈指针 (R13) 连接寄存器 (R14) 程序计数器 (R15) 低寄存器高寄存器Thumb状态寄存器在Arm状态寄存器上的映射在Thumb状态中,高寄存器(R8R15)不是标准寄存器集的一部分。汇编语言程序员对它们的访问受到限制。 可以使用MOV、CMP和ADD指令对高寄存器操作。39本节提要本节提要ARM处理器体系结构处理器体系结构ARM处理器工作模式处理器工作模式S3C44B0X简介简介 ARM中断处理中断处理ARM系统启动过程系统启动过程ARM 微处理器的指令系统微处理器的指令系统403.3 ARM中断处理中断处理3.3.1中断基础知识中断基础知识 中断和轮询方式不一样,在中

温馨提示

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

评论

0/150

提交评论