《ARMTHUMB微处理器结构及指令系统.pptx》由会员分享,可在线阅读,更多相关《ARMTHUMB微处理器结构及指令系统.pptx(103页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章章ARM/THUMB微处理器微处理器结构及指令系统结构及指令系统ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第1页!本章主要内容:本章主要内容:(1)ARM/Thumb及相关技术简介及相关技术简介(2)ARM/Thumb微处理器的应用领微处理器的应用领域及特点域及特点(3)ARM/Thumb微处理器系列微处理器系列(4)ARM/Thumb微处理器的结构微处理器的结构(5)ARM/Thumb指令系统指令系统ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第2页!第二章 目录n1 ARM微处理器概述微处理器概述 1.1 ARM处理器系列处理器系列 1.2
2、 RISC体系结构体系结构 1.3 ARM和和Thumb状态状态 1.4 寄存器寄存器 1.5 ARM指令集概述指令集概述 1.6 Thumb指令集概述指令集概述n2 ARM微处理器体系结构微处理器体系结构 2.1数据类型数据类型 2.2ARM微处理器的工作状态微处理器的工作状态 2.3 ARM体系结构的存储器格式体系结构的存储器格式 2.4处理器模式处理器模式 2.5寄存器组织寄存器组织 2.6异常异常n3 ARM/Thumb指令系统指令系统 3.1处理器寻址方式处理器寻址方式 3.2指令集介绍指令集介绍 3.3指令集介绍指令集介绍ARMTHUMB微处理器结构及指令系统共103页,您现在浏览
3、的是第3页!1 ARM微处理器概述微处理器概述 ARM处理器系列处理器系列 RISC体系结构体系结构 ARM和和Thumb状态状态 寄存器寄存器 ARM指令集概述指令集概述 Thumb指令集概述指令集概述2 ARM微处理器体系结构微处理器体系结构 数据类型数据类型 ARM微处理器的工作状态微处理器的工作状态 ARM体系结构的存储器格式体系结构的存储器格式 处理器模式处理器模式 寄存器组织寄存器组织 异常异常3 ARM/Thumb指令系统指令系统 处理器寻址方式处理器寻址方式 指令集介绍指令集介绍 指令集介绍指令集介绍 第二章第二章 目录目录ARMTHUMB微处理器结构及指令系统共103页,您现
4、在浏览的是第4页!nARM公司简介将技术授权给其它芯片厂商形成各具特色的ARM芯片.ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第5页!nARM处理器核简介 ARM公司开发了很多系列的ARM处理器核,目前最新的系列已经是ARM11了,而ARM6核以及更早的系列已经很罕见了。目前应用比较广泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscale 1.1ARM处理器系列处理器系列ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第6页!nARM处理器核简介ARM9 该系列包括ARM9TDMI、ARM920T和带有高速缓存处理器宏单元的ARM9
5、40T。除了兼容ARM7系列,而且能够更加灵活的设计。ARM9系列主要应用于引擎管理、仪器仪表、安全系统和机顶盒等领域。1.1ARM处理器系列处理器系列ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第7页!nARM处理器核简介SecurCore 该系列涵盖了SC100、SC110、SC200和SC210处理核。该系列处理器主要针对新兴的安全市场,以一种全新的安全处理器设计为智能卡和其它安全IC开发提供独特的32位系统设计,并具有特定反伪造方法,从而有助于防止对硬件和软件的盗版。1.1ARM处理器系列处理器系列ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第8
6、页!第二章 目录1 ARM微处理器概述微处理器概述 ARM处理器系列处理器系列 RISC体系结构体系结构 ARM和和Thumb状态状态 寄存器寄存器 ARM指令集概述指令集概述 Thumb指令集概述指令集概述2 ARM微处理器体系结构微处理器体系结构 数据类型数据类型 ARM微处理器的工作状态微处理器的工作状态 ARM体系结构的存储器格式体系结构的存储器格式 处理器模式处理器模式 寄存器组织寄存器组织 异常异常3 ARM/Thumb指令系统指令系统 处理器寻址方式处理器寻址方式 指令集介绍指令集介绍 指令集介绍指令集介绍ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第9页!1
7、.2 RISC体系结构体系结构 指令规整、对称、简单。指令小于指令规整、对称、简单。指令小于100条,基本条,基本寻址方寻址方 式有式有23种。种。单周期指令。单周期指令。指令字长度一致,单拍完成,便于流水操作指令字长度一致,单拍完成,便于流水操作;ARM7 三级流水线:取指、译码、执行;三级流水线:取指、译码、执行;ARM9 五级流水线;五级流水线;ARMl0 六级流水线。六级流水线。大量的寄存器。寄存器不少于大量的寄存器。寄存器不少于32个。数据处理个。数据处理器的指令只对寄存器的内容操作。只有加载器的指令只对寄存器的内容操作。只有加载存储指令可以访问存储器。存储指令可以访问存储器。RIS
8、C特点特点如下:如下:ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第10页!1.3 ARM和和Thumb状态状态Thumb指令集的功能是指令集的功能是32位位ARM指令集的指令集的功能子集。功能子集。Thumb在性能和代码大小之间提供了出在性能和代码大小之间提供了出色的折中。色的折中。n正在执行正在执行Thumb指令集的处理器是工作在指令集的处理器是工作在Thumb状态下。状态下。n正在执行正在执行ARM指令集的处理器是工作在指令集的处理器是工作在ARM状状态下。态下。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第11页!1.4.寄存器寄存器 nARM处
9、理器有处理器有37(31+6)个物理寄存个物理寄存器器,有有18个可编程访问的寄存器。个可编程访问的寄存器。n寄存器被安排成部分重叠的组。每种寄存器被安排成部分重叠的组。每种处理器模式都有不同的寄存器组。处理器模式都有不同的寄存器组。n分组的寄存器在异常处理和特权操作分组的寄存器在异常处理和特权操作时时,可得到快速的上下文切换。可得到快速的上下文切换。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第12页!数据处理指令数据处理指令 加载和存储指令加载和存储指令分支指令分支指令 协处理器指令协处理器指令 杂项指令杂项指令nARM指令集 1.5 ARM指令集概述指令集概述ARM指
10、令集可分为5大类指令,所有指令都可以条件执行,其中一些指令还可以根据执行结果更新CPSR寄存器的相关标志位:ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第13页!Thumb指令集可分为4大类指令:分支指令;数据处理指令;寄存器加载和存储指令;异常产生指令。nThumb指令集 1.6 Thumb指令集概述指令集概述 ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第14页!上节内容回顾上节内容回顾:ARM公司名称、微处理器名称和嵌入式技术名公司名称、微处理器名称和嵌入式技术名称;称;特点特点高性能、小体积、低功耗、紧代码密高性能、小体积、低功耗、紧代码密度、多
11、供应商、高占有率;度、多供应商、高占有率;系列系列ARM7、ARM9(E)、ARM10、Xscale、StrongARM和和SecurCore等等;结构结构两种两种CPU工作状态、工作状态、32位位RISC结构、结构、多寄存器、多处理器模式多寄存器、多处理器模式、两种指、两种指令集;令集;ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第15页!n体系结构直接支持的数据类型ARM处理器支持下列数据类型:字节 8位半字 16位(必须分配为占用两个字节)字 32位(必须分配为占用4各字节)1112342 2.1 数据类型数据类型ARMTHUMB微处理器结构及指令系统共103页,您现
12、在浏览的是第16页!2.2 ARM微处理器的工作状态微处理器的工作状态 ARM微处理器的微处理器的工作状态工作状态一般有两种一般有两种:ARM状态状态处理器执行处理器执行32位的字对齐的位的字对齐的ARM指令;指令;Thumb状态状态处理器执行处理器执行16位的、半字对齐的位的、半字对齐的Thumb指令。指令。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第17页!n处理器状态切换 使用BX指令将ARM7TDMI内核的操作状态在ARM状态和Thumb状态之间进行切换,程序如下所示。;从从Arm状态切换到状态切换到Thumb状态状态 LDR R0,=Lable+1 BX R0;
13、从从Thumb状态切换到状态切换到ARM状态状态 LDR R0,=Lable BX R0地址最低位为1,表示切换到Thumb状态地址最低位为0,表示切换到ARM状态跳转地址标号2.2 ARM微处理器的工作状态微处理器的工作状态 ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第18页!2.3 ARM体系结构的存储器格式体系结构的存储器格式 ARMARM体系结构可以用两种方法存储字数据,体系结构可以用两种方法存储字数据,称为称为大端格式大端格式和和小端格式小端格式。位位小端模式小端模式byte3 byte2 byte1 byte0字地址字地址 8 4 0ARMTHUMB微处理器结
14、构及指令系统共103页,您现在浏览的是第19页!第二章 目录1 ARM微处理器概述微处理器概述 ARM处理器系列处理器系列 RISC体系结构体系结构 ARM和和Thumb状态状态 寄存器寄存器 ARM指令集概述指令集概述 Thumb指令集概述指令集概述2 ARM微处理器体系结构微处理器体系结构 数据类型数据类型 ARM微处理器的工作状态微处理器的工作状态 ARM体系结构的存储器格式体系结构的存储器格式 处理器模式处理器模式 寄存器组织寄存器组织 异常异常3 ARM/Thumb指令系统指令系统 处理器寻址方式处理器寻址方式 指令集介绍指令集介绍 指令集介绍指令集介绍ARMTHUMB微处理器结构及
15、指令系统共103页,您现在浏览的是第20页!处理器模式处理器模式说明说明备注备注 用户用户 (usr)正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特权用于支持操作系统的特权任务等任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通道支持高速数据传输及通道处理处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc
16、)操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义(und)支持硬件协处理器的软件支持硬件协处理器的软件仿真仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式n处理器模式2.2.4 处理器模式处理器模式 ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第21页!n异常模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统
17、的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式 未定义 (und)中止 (abt)管理 (svc)中断 (irq)快中断 (fiq)这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时
18、,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。2.2.4 处理器模式 ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第22页!处理器启动时的模式转换图处理器启动时的模式转换图管理模式管理模式SVC(Supervisor)多种特权模式变化多种特权模式变化用户程序的运行模式用户程序的运行模式 复位后复位后缺省模式缺省模式主要完成各主要完成各模式的堆栈模式的堆栈设置,注意设置,注意不要进入用不要进入用户模式户模式一般为用户一般为用户模式模式UserARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第23页!简介简介2.
19、5 寄存器组织寄存器组织nARM处理器有处理器有37(31+6)个物理寄存器个物理寄存器,有有18个可编程访问的寄存器。个可编程访问的寄存器。n寄存器被安排成部分重叠的组。在不同的寄存器被安排成部分重叠的组。在不同的工作模式和处理器状态下,程序员可以访工作模式和处理器状态下,程序员可以访问的寄存器也不尽相同。问的寄存器也不尽相同。n分组的寄存器在处理处理器异常和特权操分组的寄存器在处理处理器异常和特权操作时可得到快速的上下文切换。作时可得到快速的上下文切换。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第24页!寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管
20、理中止未定义中断快中断通用寄存器和程序计数器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_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abt
21、 SPSR_abt SPSR_und SPSR_irq SPSR_fiqARM状态各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览
22、的是第25页!寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_abtR14_undR14_irqR14_
23、fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第26页!寄存器类别
24、寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_abtR14_undR14_irqR14_fiqR15(PC)R1
25、5状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第27页!寄存器类别
26、寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_abtR14_undR14_irqR14_fiqR15(PC)R1
27、5状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第28页!寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1
28、(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_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR
29、_fiq链接寄存器R14(LR)R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第29页!nR14寄存器与异常发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。区别在于有些异常有一个小常量的偏移。2.5 寄存器组织寄存器组织ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第30页!nR14寄存器注意要点R14R14_i
30、rq用户模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第31页!寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(
31、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_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq程序计数器R15(PC)寄存器R15为程序计数器(PC),它指向正在取指的
32、地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第32页!n读R15的限制 当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。2.5 寄存器组织寄存器组织ARMTHUMB微处理器
33、结构及指令系统共103页,您现在浏览的是第33页!n写R15的限制 正常操作时,写入正常操作时,写入R15 R15 的值被当作一个的值被当作一个指令地址,程序从这个地址处继续执行(相指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。当于执行一次无条件跳转)。2.5 寄存器组织寄存器组织ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第34页!寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(
34、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_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq程序状态寄存器CPSR 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序
35、状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第35页!Thumb状态各模式下的寄存器CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序
36、计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别注意:括号内为ATPCS中寄存器的命名,可以使用RN汇编伪指令将寄存器定义多个名字。其中ADS1.2的汇编程序直接支持这些名称,但注意a1a4,v1v4必须用小写。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第36页!Thumb状态下的堆栈指针寄存器(SP)CPSRCPSR状态寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v
37、3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序计数器快中断中断未定义中止管理系统用户各模式下实际访问的寄存器寄存器在汇编中的名称寄存器类别 堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。R13_fiqR13_irqR13_undR13_abtR13_svcR13ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第37页!nARM状态和Thumb状态之间寄存器的关系Thumb状态R0R7与ARM状态
38、R0R7相同;Thumb状态CPSR和SPSR与ARM状态CPSR和SPSR相同;Thumb状态SP映射到ARM状态R13;Thumb状态LR映射到ARM状态R14;Thumb状态PC映射到ARM状态PC(R15)。2.5 寄存器组织寄存器组织ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第38页!n在Thumb状态中访问高寄存器 在在ThumbThumb状态中,高寄存器(状态中,高寄存器(R8R8R15R15)不是标准寄存器集的一部分。汇编语)不是标准寄存器集的一部分。汇编语言程序员对它们的访问受到限制,但可以将言程序员对它们的访问受到限制,但可以将它们用于快速暂存。它们用
39、于快速暂存。可以使用可以使用MOVMOV、CMPCMP和和ADDADD指令对高指令对高寄存器操作。寄存器操作。2.5 寄存器组织寄存器组织ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第39页!程序状态寄存器NZCVIM0M1M2M3M4TF.31 30 29 28 27 26 8 7 6 5 4 3 2 1 0条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVITFCPSR寄存器的格式大多数大多数“数值处理指令数值处理指令”可以可以选择是否影响条件代码标志位(指选择是否影响条件代码标志位(指令带令带S S后缀);但有些指令执行总是
40、后缀);但有些指令执行总是影响条件代码标志。影响条件代码标志。所有所有ARMARM指令都可按条件来执指令都可按条件来执行,而行,而ThumbThumb指令中只有分支指令指令中只有分支指令可按条件执行。可按条件执行。运运算算结结果果的的最最高高位位反反映映在在该该标标志志位位。对对于于有有符符号号二二进进制制补补码码,结结果果为为负负数数时时N=1N=1,结结果果为为正正数数或零时或零时N=0N=0;指令结果为指令结果为0 0时时Z=1Z=1(表示比(表示比较结果较结果“相等相等”),否则),否则Z=0Z=0;当进行加法运算,并且最高位产生进位时C=1,否则C=0。当进行减法运算,并且最高位产生
41、借位时C=0,否则C=1。对于移位操作指令,C为从最高位最后移出的值,其它指令C通常不变;当进行加法当进行加法/减法运算,减法运算,并且发生有符号溢出时并且发生有符号溢出时V=1,否则,否则V=0,其它指,其它指令令V通常不变。通常不变。最低最低8 8位为控制位,当发生异常时,这些位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。时,可用软件操作这些位。保留位被保留将来使用。为了提高程序的可保留位被保留将来使用。为了提高程序的可移植性,当改变移植性,当改变CPSRCPSR标志和控制位时,请不要标志和控制位时,请不要
42、改变这些保留位。另外,请确保您程序的运行改变这些保留位。另外,请确保您程序的运行不受保留位的值影响,因为将来的处理器可能不受保留位的值影响,因为将来的处理器可能会将这些位设置为会将这些位设置为1 1或者或者0 0。ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第40页!第二章 目录1 ARM微处理器概述微处理器概述 ARM处理器系列处理器系列 RISC体系结构体系结构 ARM和和Thumb状态状态 寄存器寄存器 ARM指令集概述指令集概述 Thumb指令集概述指令集概述2 ARM微处理器体系结构微处理器体系结构 数据类型数据类型 ARM微处理器的工作状态微处理器的工作状态 A
43、RM体系结构的存储器格式体系结构的存储器格式 处理器模式处理器模式 寄存器组织寄存器组织 异常异常3 ARM/Thumb指令系统指令系统 处理器寻址方式处理器寻址方式 指令集介绍指令集介绍 指令集介绍指令集介绍ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第41页!异常处理器模式异常处理器模式异常类型异常类型模式模式正常地址正常地址复位复位管理管理0 x00000000未定义指令未定义指令未定义未定义0 x00000004软件中断软件中断(SWISWI)管理管理0 x00000008预取中止预取中止(取指令存储器中止)(取指令存储器中止)中止中止0 x0000000C数据中止
44、数据中止(数据访问存储器中止)(数据访问存储器中止)中止中止0 x00000010IRQIRQ(中断)(中断)IRQIRQ0 x00000018FIQFIQ(快速中断)(快速中断)FIQFIQ0 x0000001CARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第42页!如果异常处理程序已经把返回地址拷贝到堆栈,那么可以使用一条多寄存器传送指令来恢复用户寄存器并实现返回。中断处理代码的开始部分和退出部分n异常的入口和出口处理SUB LR,LR,#4;计算返回地址STMFD SP!,R0-R3,LR;保存使用到的寄存器.LDMFD SP!,R0-R3,PC;中断返回注意:中断返回
45、指令的寄存器列表(其中必须包括PC)后的“”符号表示这是一条特殊形式的指令。这条指令在从存储器中装载PC的同时(PC是最后恢复的),CPSR也得到恢复。这里使用的堆栈指针SP(R13)是属于异常模式的寄存器,每个异常模式有自己的堆栈指针。这个堆栈指针应必须在系统启动时初始化。2.6 异常异常ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第43页!n进入异常在异常发生后,ARM7TDMI内核会作以下工作:2.将CPSR复制到适当的SPSR中;3.将CPSR模式位强制设置为与异常类型相对应的值;4.强制PC从相关的异常向量处取指。2.6 异常异常ARMTHUMB微处理器结构及指令
46、系统共103页,您现在浏览的是第44页!当异常结束时,异常处理程序必须:1.将LR中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断禁止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。n退出异常2.6 异常异常ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第45页!在异常处理结束后,异常处理程序完成以下动作:程序AIRQ服务程序系统模式IRQ模式程序寄存器组图示退出异常过程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0.?MODTFI.N Z C V将SPS
47、R寄存器的值复制回CPSR寄存器;将LR寄存的值减去一个常量后复制到PC寄存器,跳转到被中断的用户程序。IRQ0?1.?BackAddrJumpAddrreturnSYS1?0.?SYS1?0.?BackAddr-4Jump“?”表示对该位不关心ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第46页!中断请求(IRQ)异常是一个由nIRQ输入端的低电平所产生的正常中断(在具体的芯片中,nIRQ由片内外设拉低,nIRQ是内核的一个信号,对用户不可见)。IRQ的优先级低于FIQ。对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位CPSR中的I 位来禁止IRQ。不管
48、异常入口是来自ARM状态还是Thumb状态,FIQ处理程序都会通过执行下面的指令从中断返回:SUBS PC,R14_fiq,#4n中断请求2.6 异常异常ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第47页!当发生预取中止时,ARM7TDMI内核将预取的指令标记为无效,但在指令到达流水线的执行阶段时才进入异常。如果指令在流水线中因为发生分支而没有被执行,中止将不会发生。在处理中止的原因之后,不管处于哪种处理器操作状态,处理程序都会执行下面的指令恢复PC和CPSR并重试被中止的指令:SUBS PC,R14_abt,#4n中止预取指中止2.6 异常异常ARMTHUMB微处理器结
49、构及指令系统共103页,您现在浏览的是第48页!块数据转移指令(LDM,STM)完成。当回写被设置时,基址寄存器被更新。在指示出现中止后,ARM7TDMI内核防止所有寄存器被覆盖。这意味着ARM7TDMI内核总是会保护被中止的LDM指令中的R15(总是最后一个被转移的寄存器)。n中止数据中止 当发生数据中止后,根据产生数据中止的指令类型作出不同的处理:2.6 异常异常ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第49页!使用软件中断(SWI)指令可以进入管理模式,通常用于请求一个特定的管理函数。SWI处理程序通过执行下面的指令返回:MOVS PC,R14_svc 这个动作恢
50、复了PC和CPSR并返回到SWI之后的指令。SWI处理程序读取操作码以提取SWI函数编号。n软件中断指令2.6 异常异常ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第50页!在模拟处理了失败的指令后,陷阱程序执行下面的指令:MOVS PC,R14_svc 这个动作恢复了PC和CPSR并返回到未定义指令之后的指令。n未定义的指令2.6 异常异常ARMTHUMB微处理器结构及指令系统共103页,您现在浏览的是第51页!当多个异常同时发生时,一个固定的优先级系统决定它们被处理的顺序:n异常优先级异常类型优先级复位1(最高优先级)数据中止2FIQ3IRQ4预取中止5未定义指令6SW