




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、11.1 ARM技术的应用领域及其特点 ARM技术的IP核在下列领域已经取得或正在取得很大的成功。 无线设备 蓝牙技术 联网 消费电子 汽车 海量存储设备 成像 安全产品第1页/共83页2将技术授权给其它芯片厂商形成各具特色的ARM芯片. . .第2页/共83页31.1 ARM技术的应用领域及其特点 ARM芯片具有RISC体系的一般特点,如: 具有大量的寄存器。 绝大多数操作都在寄存器中进行,通过Load/Store的体系结构在内存和寄存器之间传递数据。 寻址方式简单。 采用固定长度的指令格式。 除此之外,ARM体系采用了一些特别的技术,在保证高性能的同时尽量减小芯片体积,减低芯片的功耗。这些
2、技术包括: 在同一条数据处理指令中包含算术逻辑处理单元处理和移位处理。 使用地址自动增加(减少)来优化程序中循环处理。 Load/Store指令可以批量传输数据,从而提高数据传输的效率。 所有指令都可以根据前面指令执行结果,决定是否执行,以提高指令执行的效率。第3页/共83页41.2 ARM体系结构的版本及命名方法 ARM体系结构共定义了6个版本,版本号分别为16。从版本1到版本6,ARM体系的指令集功能不断扩大。同时,各版本中还有一些变种,这些变种定义了该版本指令集中不同的功能。ARM处理器系列中的各种处理器,其采用的实现技术各不相同,性能差别很大,应用场合也有所不同,但是只要它们支持相同的
3、ARM体系版本,基于它们的应用软件将是兼容的。 本节介绍ARM体系结构不同版本指令集的特点,以及各版本包含的一些变种的特点。第4页/共83页51.2.1 ARM体系结构的版本 ARM体系结构的6个版本的特点如下。 1. 版本1 2. 版本2 3. 版本3 4. 版本4 5. 版本5 6. 版本6第5页/共83页6 1. 版本1本版本在ARM1中实现,但没有在商业产品中使用。它包括下列指令: 处理乘法指令之外的基本数据处理指令。 基于字节、字和多字的读取和写入指令(Load/Store)。 包括子程序调用指令BL在内的跳转指令。 供操作系统使用的软件中断指令SWI。 本版本中地址空间是26位,目
4、前已经不再使用。第6页/共83页7 2. 版本2 与版本1相比,版本2增加了下列指令: 乘法指令和乘加法指令。 支持协处理器的指令。 对于FIQ模式,提供了额外的两个备份寄存器。 SWP指令及SWPB指令。 本版本中地址空间是26位,目前已经不再使用。第7页/共83页8 3. 版本3 版本3较以前的版本发生了比较大的变化。主要改进部分如下: 处理器的地址空间扩展到了32位,但除了版本3G(版本3的一个变种)外的其他版本是向前兼容的,支持26位的地址空间。 当前程序状态信息从原来的R15寄存器移到一个新的寄存器中,新寄存器名为CPSR。 增加了SPSR用于在程序异常中断程序时,保存被中断的程序的
5、程序状态。 增加了指令MRS和指令MSR,用于访问CPSR寄存器和SPSR寄存器。 增加了两种处理器模式(数据访问中止模式、未定义指令模式),使操作系统代码可以方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。 修改了原来的从异常中返回的指令。第8页/共83页9 4. 版本4 与版本3相比,版本4增加了下列指令: 半字的读取和写入指令。 读取(Load)带符号的字节和半字数据的指令。 增加了T变种,可以使处理器状态切换到Thumb状态,在该状态下指令集是16位的Thumb指令集。 增加了处理器的特权模式。在该模式下,使用的是用户模式下的寄存器。 另外,在版本4中明确定义了哪些指令会
6、引起未定义指令异常。版本4不再强制要求与以前的26位地址空间兼容。第9页/共83页10 5. 版本5 与版本4相比,版本5增加或者修改了下列指令: 提高了T变种中ARM/Thumb混合使用的效率。 对于T变种的指令和非T变种的指令使用相同的代码生成技术。 同时,版本5还具有以下的特点。 增加了前导零计数(count leading zeros)指令,该指令可以使整数除法和中断优先级排队操作更为有效。 增加了软件断点指令。 为协处理器设计提供了更多的可选择的指令。 更加严格地定义了乘法指令对条件标志位的影响。第10页/共83页11 6. 版本6 ARM体系版本6是2001年发布的。 其主要特点是
7、增加了SIMD功能扩展。 它适合使用电池供电的高性能的便携式设备。这些设备一方面需要处理器提供高性能,另一方面又需要功耗很低。 SIMD功能扩展为包括音频/视频处理在内的应用系统提供了优化功能。它可以使音频/视频处理性能提高4倍。 ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。第11页/共83页12 SIMD在性能上的优势: 以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运
8、算。 这个特点使SIMD特别适合于多媒体应用等数据密集型运算。 第12页/共83页131.2.2 ARM体系的变种 这里将某些特定功能称为ARM体系的某种变种(variant),例如支持Thumb指令集,称为T变种。目前ARM定义了一些变种。 1. Thumb指令集(T变种) 2. 长乘法指令(M变种) 3. 增强型DSP指令(E变种) 4. Java加速器Jazelle(J变种) 5. ARM媒体功能扩展(SIMD变种)第13页/共83页141.2.3 ARM/Thumb体系版本的命名格式 表示ARM/Thumb体系版本的字符串是由下面几部分组成的: 字符串ARMv。 ARM指令集版本号。目
9、前是16的数字字符。 表示变种的字符。由于在ARM体系版本4以后,M变种成为系统的标准功能,字符M通常不需要列出来。 使用字符x表示排除某种写功能。比如,xM、ExP。第14页/共83页151.3 ARM处理器系列 ARM处理器目前包括下面几个系列的处理器产品以及其他厂商实现的基于ARM体系结构的处理器。 ARM7系列。 ARM9系列。 ARM9E系列。 ARM10E系列。 SecurCore系列。 Intel的Xscale。 Intel的StrongARM。第15页/共83页16预取(Fetch)译码(Decode)执行(Execute)预取(Fetch)译码(Decode)执行(Execu
10、te)访存(Memory)写入(Write)预取(Fetch)译码(Decode)发送(Issue)预取(Fetch)预取(Fetch)执行(Execute)访存(Memory)写入(Write)译码(Decode)发送(Issue)执行(Execute)转换(Snny)访存(Memory)写入(Write)ARM7ARM9ARM10ARM11 第16页/共83页17项目项目ARM7ARM9ARM10ARM11流水线流水线3568典型频率(典型频率(MHz)80150260335功耗(功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能性能MIP
11、S*/MHz0.971.11.31.2架构架构冯冯 诺伊曼诺伊曼哈佛哈佛哈佛哈佛哈佛哈佛 第17页/共83页181.3.1 ARM7系列 ARM7系列包括ARM7TDMI、ARM7TDMI-S、ARM7EJ-S和ARM720T 4种类型,主要用于适应不同的市场需求。 ARM7系列处理器具体应用于以下场合: 个人音频设备(MP3播放器、WMA播放器、AAC播放器)。 接入级的无线无线设备。 喷墨打印机。 数字照相机。 PDA。第18页/共83页191.3.1 ARM7系列 ARM7系列处理器具有以下主要特点: 成熟的大批量的32位RICS芯片。 最高主频达到130 MIPS。 功耗很低。 代码密
12、度很高,兼容16位的微处理器。 得到广泛的操作系统和实时操作系统支持,包括Window CE、Palm OS、 Symbian OS、Linux以及业界领先的实时操作系统。 众多的开发工具。 EDA仿真模型。 优秀的调试机制。 业界众多领先的IC制造商生产这类芯片。 提供0.25m、0.18m及0.13m的生产工艺。 代码于ARM9系列、ARM9E、ARM10E兼容。 第19页/共83页201.3.2 ARM9系列 ARM9系列包括ARM920T、ARM922T和ARM940T 3种类型,主要用于适应不同的市场需求。 ARM9系列处理器的具体应用于以下场合: 下一代的无线设备,包括视频电话和P
13、DA等。 数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。 成像设备,包括打印机、数字照相机和数字摄像机等。 汽车、通信和信息系统。第20页/共83页211.3.2 ARM9系列 ARM9系列处理器具有以下主要特点: 支持32位ARM指令集和16位Thumb指令集的32位RISC处理器。 五级整数流水线。 单一的32位AMBA总线接口。 MMU支持Window CE、Palm OS、Symbian OS、Linux等。 MPU支持实时操作系统,包括Vxworks。 统一的数据cache和指令cache。 提供0.18m、0.15m 及 0.13m的生产工艺。第21页/共83
14、页221.3.3 ARM9E系列 ARM9E系列包括ARM926EJ-S、ARM946E-S和ARM966E-S 3种类型,用于适应不同的市场需求。 ARM9E系列处理器具体应用在以下场合: 下一代的无线设备,包括视频电话和PDA等。 数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。 成像设备,包括打印机、数字照相机和数字摄像机等。 存储设备,包括DVD域HDD等。 工业控制,包括马达控制和能量控制等。 汽车,通信和信息系统的ABS和车体控制等。 网络设备,包括VoIP、WirelessLAN、xDSL等。第22页/共83页231.3.3 ARM9E系列 ARM9E系列处理
15、器具有以下主要特点: 支持32位的ARM指令集和16位的Thumb指令集的32位RISC处理器。 包括了DSP指令集。 五级整数流水线。 在典型的0.13m工艺下,主频可以达到300 MIPS的性能。 集成的实时跟踪和调试功能。 单一的32位AMBA总线接口。 可选的VFP9浮点处理协处理器。 在实时控制和三维图像处理时主频可达到215 MFLOPS。 高性能的AHB系统。 MMU支持Window CE、Palm OS、Symbian OS、Linux等。 MPU支持实时操作系统,包括Vxworks。 统一的数据cache和指令cache。 提供0.18m、0.15m 及 0.13m的生产工艺
16、。第23页/共83页241.3.4 ARM10E系列 ARM10E系列包括ARM1020E、ARM1022E和ARM1026EJ-S 3种类型,主要用于适应不同的市场需求。 ARM10E系列处理器具体应用于以下场合: 下一代的无线设备,包括视频电话、PDA、笔记本电脑和Internet设备等。 数字消费品,包括机顶盒、家庭网关、MP3播放器和MPEG4播放器等。 成像设备,包括激光打印机、数字照相机和数字摄像机等。 工业控制,包括马达控制和能量控制等。 汽车,通信和信息系统等。第24页/共83页251.3.4 ARM10E系列 ARM10E系列处理器具有以下主要特点: 支持32位的ARM指令集
17、和16位的Thumb指令集的32位RISC处理器。 包括了DSP指令集。 六级整数流水线。 在典型的0.13m工艺下,主频可以达到400 MIPS的性能。 单一的32位AMBA总线接口。 可选的VFP10浮点处理协处理器。 在实时控制和三维图像处理时主频可达到650 MFLOPS。 高性能的AHB系统。 MMU支持Window CE、Palm OS、Symbian OS、Linux等。 统一的数据cache和指令cache。 提供0.18m、0.15m 及 0.13m的生产工艺。 并行读取/写入(load/store)部件。第25页/共83页261.3.5 SecurCore系列 SecurC
18、ore系列处理器除了具有体积小、功耗低、代码密度大和性能高等特点外,还具有它自己的特别优势,即提供了安全解决方案的支持。SecurCore系列处理器具有以下特点: 支持ARM指令集和Thumb指令集,以提高代码密度和系统性能。 采用软内核技术,以提供最大限度的灵活性,以及防止外部对其进行扫描探测。 提供了安全特性,抵制攻击。 提供面向智能卡的和低成本的存储保护单元(MPU)。 可以集成用户自己的安全特性和其他的协处理器。第26页/共83页271.3.5 SecurCore系列 SecurCore系列包括SecurCore SC100、SecurCore SC110、SecurCore SC20
19、0和SecurCore SC210 4种类型,主要用于适应不同的市场需求。 SecurCore系列处理器主要应用于一些安全产品及应用系统,包括电子商务、电子银行业务、网络、移动媒体和认证系统等。 本章简单介绍ARM体系编程模型的一些基本概念,相关的知识在本书后面还有详细的介绍。第27页/共83页281.4 ARM处理器模式 ARM处理器共有7种运行模式,如表1.3所示。 处理器模式说明备注 用户 (usr)正常程序执行模式不能直接切换到其它模式 系统 (sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时
20、进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 /特权 (svc) 操作系统使用的一种保护模式系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式第28页/共83页 特权模式处理器模式处理器模式说明说明备注备注 用户用户 (usr) 正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特用于支持操作系统的特权任务等权任务等与用户模式类似,但具有可以与用户模式类似,但具
21、有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通支持高速数据传输及通道处理道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc) 操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软支持硬件协处理器的软件仿真件
22、仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。 未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断中断 (irq) 快中断快中断 (fiq) 系统系统 (sys)第29页/共83页 异常模式处理器模式处理器模式说明说明备注备注 用户用户 (usr) 正常程序工作模式正常程序工作模式不能直接切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系
23、统的特用于支持操作系统的特权任务等权任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通支持高速数据传输及通道处理道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc) 操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大
24、用处没有大用处 未定义未定义 (und)支持硬件协处理器的软支持硬件协处理器的软件仿真件仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断中断 (irq) 快中断快中断 (fiq) 这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。第30页/共83页 用户和系统模式处理器模式处理器模式说明说明备注备注 用户用户 (usr) 正常程序工作模式正常程序工作模式不能直接
25、切换到其它模式不能直接切换到其它模式 系统系统 (sys)用于支持操作系统的特用于支持操作系统的特权任务等权任务等与用户模式类似,但具有可以与用户模式类似,但具有可以直接切换到其它模式等特权直接切换到其它模式等特权 快中断快中断 (fiq)支持高速数据传输及通支持高速数据传输及通道处理道处理FIQ异常响应时进入此模式异常响应时进入此模式 中断中断 (irq)用于通用中断处理用于通用中断处理IRQ异常响应时进入此模式异常响应时进入此模式 管理管理 (svc) 操作系统保护代码操作系统保护代码系统复位和软件中断响应时进系统复位和软件中断响应时进入此模式入此模式 中止中止 (abt)用于支持虚拟内存
26、和用于支持虚拟内存和/或或存储器保护存储器保护在在ARM7TDMI没有大用处没有大用处 未定义未定义 (und)支持硬件协处理器的软支持硬件协处理器的软件仿真件仿真未定义指令异常响应时进入此未定义指令异常响应时进入此模式模式 这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。 系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。 系统系统 (sys) 用户用户 (usr)第31页/共83页321.5 ARM寄存器介绍 ARM处理器共有37个寄存器。其中包括: 31个通用寄存器,包括程序
27、计数器(PC)在内。这些寄存器都是32位寄存器。 6个状态寄存器。这些寄存器都是32位寄存器,但目前只使用了其中12位。 ARM处理器共有7种不同的处理器模式,在每一种处理器模式中有一组相应的寄存器组。任意时刻(也就是任意的处理器模式下),可见的寄存器包括15个通用寄存器(R0R14)、一个或两个状态寄存器及程序计数器(PC)。在所有的寄存器中,有些是各模式共用的同一个物理寄存器;有一些寄存器是各模式自己拥有的独立的物理寄存器。 第32页/共83页33寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定
28、义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiq *R9(SB,v6)R9R9_fiq *R10(SL,v7)R10R10_fiq *R11(FP,v8)R11R11_fiq *R12(IP)R12R12_fiq *R13(SP)R13R13_svc* R13_abt * R13_und * R13_irq *R13_fiq *R14(LR)R14R14_svc * R14_abt * R14_und * R14_i
29、rq *R14_fiq *R15(PC)R15状态寄状态寄存器存器R16(CPSR)CPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq第33页/共83页34寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6
30、)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_abtSPSR_und SPSR_irq SPSR_fiqSPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_un
31、dR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。第34页/共83页寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4
32、)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 SPSR_abtSPSR_und SPSR_irq SPSR_fiq无无CPSRR15R
33、14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R1
34、0R9R8R7R6R5R4R3R2R1R0中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断第35页/共83页寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR
35、9(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_abtSPSR_und SPSR_irq SPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R1
36、0_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。第36页/共83页寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v
37、5)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_abtSPSR_und SPSR_irq SPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R
38、11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。第37页/共83页寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R
39、8(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_abtSPSR_und SPSR_irq SPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR
40、13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器第38页/共83页寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5
41、(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 SPSR_abtSPSR_und SPSR_irq SPSR_fiqR12_fiqR12R11_fiqR11R10
42、_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。第39页/共83页寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(S
43、B,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_abtSPSR_und SPSR_irq SPSR_fiq 寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_
44、irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13第40页/共83页41寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器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_fiqR
45、11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSRSPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq堆栈指针寄存器R13(SP) 寄存器R13常作为堆栈指针(SP),通常R13应当被初始化成指向异常模式分配的堆栈。在入口,异常处理程序将用到的其他寄存器的值保持到堆栈中。返回时,重新将这些值加载到寄
46、存器。第41页/共83页42寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器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_abtR1
47、3_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSRSPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq链接寄存器R14(LR) R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址。第42页/共83页43Lable程序A程序BR14 R14(LR)寄存器与子程序调用BL Lable地址A?MOV PC,LR
48、R14(地址A)Lable。1.程序A执行过程中调用程序B;操作流程2.程序跳转至标号Lable,执行程序B。同时硬件将“BL Lable”指令的下一条指令所在地址存入R14(LR);3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;第43页/共83页44 R14寄存器与异常发生 异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。 第44页/共83页45 R14寄存器注意要点 当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重
49、新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。第45页/共83页46 R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程序AareturnB.XA地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容存入PC,返回之前被中断的程序;未被破坏R14_irq地址A第46页/共83页47 R14寄存器注意要点R14R14_irq用户模式下的程序IRQ模式下的程
50、序AaB.XA地址A地址A1.执行用户模式下的程序;2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;3. IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;未被破坏IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断;5. 硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;R14_irq 被破坏6. 在程序B返回到程序A,然后在返回到用户模式下被中断的程序时,发生错误,将不能正确返回;ret
51、urnreturn 解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。第47页/共83页寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器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_fiqR
52、11(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_abtSPSR_und SPSR_irq SPSR_fiq 寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果R15使用的方式超出了这些限制,那么结果将是不可预测的
53、。第48页/共83页寄存器寄存器类别类别寄存器在汇编寄存器在汇编中的名称中的名称各模式下实际访问的寄存器各模式下实际访问的寄存器用户用户系统系统管理管理中止中止未定义未定义中断中断快中断快中断通用寄通用寄存器和存器和程序计程序计数器数器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_un
54、dR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄状态寄存器存器CPSRCPSRSPSR无无SPSR_abt SPSR_abtSPSR_und SPSR_irq SPSR_fiq 寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。第49页/共83页501.5.1 通用寄存器通用寄存器可以分为下面3类:未备份寄存器(The unbanked regis
55、ters),包括R0R7。备份寄存器(The banked registers),包括R8R14。程序计数器PC,即R15。第50页/共83页 对于备份寄存器R8R12来说,每个寄存器对应两个不同的物理寄存器。 对于备份寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器, 采用下面的记号来区分各个物理寄存器:Rn_(其中,可以是下面几种模式之一:usr、sys、svc、abt、und、irq及fiq。)第51页/共83页R13 寄存器R13在ARM中常用作栈指针。在ARM指令集中,这只是一种习惯的用法,并没有任何指令强制性的使用R13作为栈指针,用户也可以使用其他的寄存器作为栈指针;
56、而在Thumb指令集中,有一些指令强制性地使用R13作为栈指针。 每一种异常模式拥有自己的物理的R13。应用程序初始化该R13,使其指向该异常模式专用的栈地址。当进入异常模式时,可以将需要使用的寄存器保存在R13所指的栈中;当退出异常处理程序时,将保存在R13所指的栈中的寄存器值弹出。这样就使异常处理程序不会破坏被其中断程序的运行现场。第52页/共83页R14 寄存器R14又被称为连接寄存器(Link Register,LR),在ARM体系中具有下面两种特殊的作用: 每一种处理器模式自己的物理R14中存放在当前子程序的返回地址。当通过BL或BLX指令调用子程序时,R14被设置成该子程序的返回地
57、址。在子程序中,当把R14的值复制到程序计数器PC中时,子程序即返回。可以通过下面两种方式实现这种子程序的返回操作。 当异常中断发生时,该异常模式特定的物理R14被设置成该异常模式将要返回的地址,对于有些异常模式,R14的值可能与将返回的地址有一个常数的偏移量。R14寄存器也可以作为通用寄存器使用。第53页/共83页R15 程序计数器R15又被记作PC。当成功地向R15中写入一个地址数值时,程序将跳转到该地址执行。 由于ARM采用了流水线机制,当正确读取了PC的值时,该值为当前指令地址值加8个字节。也就是说,对于ARM指令集来说,PC指向当前指令的下两条指令的地址。 由于ARM指令是字对齐的,
58、PC值的第0位和第1位总为0。第54页/共83页R15 指令 MOV PC,PC 将程序跳转到当前指令下面第2条指令处执行。 因为指令中,第2个PC寄存器读出的值为当前指令的地址值加8,这样对ARM指令而言写入PC寄存器的是当前指令下面第2条指令的地址。 类似的指令还有ADD PC,PC,#0。第55页/共83页561.5.3 程序状态寄存器 CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。 每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄
59、存器用于存放当前程序状态寄存器的内容。在异常中断程序退出时,可以用SPSR中保存的值来恢复CPSR。第56页/共83页 CPSR的格式如下所示。SPSR格式与CPSR格式相同。 1. 条件标志位 2. Q标志位 3. CPSR中的控制位 4. CPSR中的其他位第57页/共83页 1. 条件标志位 N (Negative)、Z (Zero)、C (Carry) 及V (oVerflow)统称为条件标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位来选择性地执行。 通常如果指令带S后缀,则该指令的执行会影响条件代码标志;但有一些指令的执行总是会影响条件代码标志。 第58页/共83页 各
60、标志位的含义如下: N 运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0; Z 指令结果为0时Z=1,否则Z=0;对于CMP指令,Z=1表示进行比较的两个数大小相等 C 当进行加法运算,并且最高位产生进位时C=1,否则C=0。当进行减法运算,并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变; V 当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。第59页/共83页 2. Q标志位 在ARM v5的E系列处理器中,CPSR的bit27称为Q标志位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 互联网教育企业有限合伙人合作协议
- 抖音企业号年度内容审核与风险控制服务合同
- 模块化应急医院建造与医疗废物处理设施建设协议
- 城市综合体购物中心A类铺位租赁及品牌推广协议
- 国际医疗设施租赁与专业操作培训合同
- 拼多多电商平台客服团队建设与客户关系维护合同
- 移动应用积分合作补充协议
- 小红书短视频内容营销战略合作协议
- 影视特效化妆假体租赁与特效制作技术指导与实施合同
- 空间技术产业私募股权投资基金有限合伙人全面合作协议
- 山东交通学院成人高考智能交通系统复习题及参考答案
- 汽车类驾照考试科目一考试题库(900题完美打印版)
- DBS改善工具-T-I事务性流程改善-课件
- 山东大学毕业生登记表
- 《心肺复苏及电除颤》
- Fe3+-Bi3+混合溶液各含量的测定
- 毫针刺法技术操作规程
- 基于stm32的智能小车设计毕业设计论文
- 手术通知单模板
- GB∕T 26077-2021 金属材料 疲劳试验 轴向应变控制方法
- GB∕T 3853-2017 容积式压缩机 验收试验
评论
0/150
提交评论