




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第 1 1 章章ARM 处 理 器 简 介nARMARM公司简介公司简介 ARM是是Advanced RISC Machines的缩写,它的缩写,它是一家微处理器行业的知名企业,该企业设计是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的了大量高性能、廉价、耗能低的RISC (精简指(精简指令集)处理器。令集)处理器。 公司的特点是只设计芯片,而不公司的特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导生产。它将技术授权给世界上许多著名的半导体、软件和体、软件和OEM厂商,并提供服务。厂商,并提供服务。nARMARM公司简介公司简介将技术授权给其它芯片厂商形成各
2、具特色的ARM芯片. . .ARMARM(Advanced RISC MachinesAdvanced RISC Machines)有)有3 3种含义:种含义:一个公司的名称一个公司的名称一类微处理器的通称一类微处理器的通称一种技术的名称一种技术的名称采用采用RISCRISC架构的架构的ARMARM微处理器一般具有如下微处理器一般具有如下特点:特点:n体积小、低功耗、低成本、高性能;体积小、低功耗、低成本、高性能;n支持支持ThumbThumb(1616位)位)/ARM/ARM(3232位)双指令集,能很位)双指令集,能很好的兼容好的兼容8 8位位/16/16位器件;位器件;n大量使用寄存器,
3、指令执行速度更快;大量使用寄存器,指令执行速度更快;n大多数数据操作都在寄存器中完成;大多数数据操作都在寄存器中完成;n寻址方式灵活简单,执行效率高;寻址方式灵活简单,执行效率高;n指令长度固定。指令长度固定。 ARMARM处理器的应用处理器的应用n当前主要应用于消费类电子领域;当前主要应用于消费类电子领域;n到目前为止,基于到目前为止,基于ARMARM技术的微处理器应用约占据技术的微处理器应用约占据了了3232位嵌入式微处理器位嵌入式微处理器8080以上的市场份额;以上的市场份额;n全球全球90%90%的的GSM/3GGSM/3G手机、手机、99%99%的的CDMACDMA手机以及绝大手机以
4、及绝大多数多数PDAPDA产品均采用产品均采用ARMARM体系的嵌入式处理器;体系的嵌入式处理器;n“掌上计算掌上计算”相关领域皆为相关领域皆为ARMARM所主宰;所主宰;1 1嵌入式嵌入式CISCCISC微处理器微处理器 传统的传统的CISCCISC(Complex Instruction Set Complex Instruction Set ComputerComputer,复杂指令集计算机复杂指令集计算机)结构有其固有的缺)结构有其固有的缺点,即随着计算机技术的发展而不断引入新的复杂点,即随着计算机技术的发展而不断引入新的复杂的指令集,为支持这些新增的指令,计算机的体系的指令集,为支持
5、这些新增的指令,计算机的体系结构会越来越复杂。结构会越来越复杂。 然而,在然而,在CISCCISC指令集的各种指令中,其使用频指令集的各种指令中,其使用频率却相差悬殊,大约有率却相差悬殊,大约有2020的指令会被反复使用,的指令会被反复使用,占整个程序代码的占整个程序代码的8080。而余下的。而余下的8080的指令却不的指令却不经常使用,在程序设计中只占经常使用,在程序设计中只占2020,显然,这种结,显然,这种结构是不太合理的。构是不太合理的。2. 2. 嵌入式嵌入式RISCRISC微处理器微处理器基于以上的不合理性,基于以上的不合理性,19791979年美国加州大学年美国加州大学伯克利分校
6、提出了伯克利分校提出了RISCRISC(Reduced Instruction Reduced Instruction Set ComputerSet Computer,精简指令集计算机精简指令集计算机)的概念。)的概念。RISCRISC是精简指令集计算机,但是精简指令集计算机,但RISCRISC并非只是并非只是简单地去减少指令,而是把着眼点放在了如何使简单地去减少指令,而是把着眼点放在了如何使计算机的结构更加简单合理地提高运算速度上。计算机的结构更加简单合理地提高运算速度上。 RISC RISC结构优先选取使用频最高的简单指令,结构优先选取使用频最高的简单指令,抛弃复杂指令,固定指令长度,减
7、少指令格式和抛弃复杂指令,固定指令长度,减少指令格式和寻址方式,以控制逻辑为主,不用或少用微码控寻址方式,以控制逻辑为主,不用或少用微码控制等措施来达到上述目的。制等措施来达到上述目的。 nRISCRISC体系结构应具有如下特点:体系结构应具有如下特点:采用固定长度的指令格式,指令归整、简单、采用固定长度的指令格式,指令归整、简单、基本寻址方式有基本寻址方式有2 23 3种。种。使用使用单周期指令单周期指令,便于流水线操作执行。,便于流水线操作执行。大量使用寄存器,数据处理指令只对寄存器进大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载行操作,只有加载/ / 存储指令可以访问存储器,存
8、储指令可以访问存储器,以提高指令的执行效率。以提高指令的执行效率。除此以外,除此以外,ARMARM体系结构还采用了一些特别的体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗。面积,并降低功耗。nRISCRISC体系结构应具有如下特点:体系结构应具有如下特点:所有的指令都可根据前面的执行结果决定是否所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。被执行,从而提高指令的执行效率。可用加载可用加载/ /存储指令批量传输数据,以提高数存储指令批量传输数据,以提高数据的传输效率。据的传输效率。可在一条数据处
9、理指令中同时完成逻辑处理和可在一条数据处理指令中同时完成逻辑处理和移位处理。移位处理。在循环处理中使用地址的自动增减来提高运行在循环处理中使用地址的自动增减来提高运行效率。效率。RISCRISC和和CISCCISC之间的主要区别之间的主要区别: :指指 标标RISCCISC指令集指令集 一个周期执行一条指一个周期执行一条指令,通过简单指令令,通过简单指令的组合实理复杂操的组合实理复杂操作;指令长度固定。作;指令长度固定。 指令长度不固定,指令长度不固定,执行需要多个周期。执行需要多个周期。流水线流水线 流水线每周期前进一流水线每周期前进一步。步。 指令的执行需要调指令的执行需要调用微代码的一个
10、微用微代码的一个微程序。程序。寄存器寄存器 更多通用寄存器。更多通用寄存器。 用于特定目的的专用于特定目的的专用寄存器。用寄存器。Load/Store结构结构 独立的独立的Load和和Store指令完成数据指令完成数据在寄存器和外部存在寄存器和外部存储器之间的传输。储器之间的传输。 处理器能够直接处处理器能够直接处理存储器中的数据。理存储器中的数据。1.1 1.1 处理器模式处理器模式ARMARM微处理器支持微处理器支持7 7种运行模式,分别为:种运行模式,分别为:用户模式(用户模式(UserUser):): ARMARM处理器正常的程序执行状态。处理器正常的程序执行状态。快速中断模式(快速中
11、断模式(FIQFIQ):):用于高速数据传输或通道处理。用于高速数据传输或通道处理。外部中断模式(外部中断模式(IRQIRQ):):用于通用的中断处理。用于通用的中断处理。管理模式(管理模式(SupervisorSupervisor):):操作系统使用的保护模式。操作系统使用的保护模式。数据访问终止模式数据访问终止模式(Abort)(Abort):当数据或指令预取终止时进当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。入该模式,可用于虚拟存储及存储保护。系统模式(系统模式(SystemSystem):):运行具有特权的操作系统任务。运行具有特权的操作系统任务。未定义指令中止模式(未
12、定义指令中止模式(UndefinedUndefined):):当未定义的指令执当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。行时进入该模式,可用于支持硬件协处理器的软件仿真。n特权模式特权模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc) 操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt
13、)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式除用户模式外,其它模式均为除用户模式外,其它模式均为特权特权模式模式。ARMARM内部寄存器和一些片内部寄存器和一些片内外设在硬件设计上只允许(或者内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切理器模式,而用户模式不能直接切换到别的模式。换到别的模式。 未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断
14、中断 (irq) 快中断快中断 (fiq) 系统系统 (sys)1.1 1.1 处理器模式处理器模式n异常模式异常模式处理器模式说明备注 用户 (usr) 正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc) 操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协
15、处理器的软件仿真未定义指令异常响应时进入此模式 未定义未定义 (und) 中止中止 (abt) 管理管理 (svc) 中断中断 (irq) 快中断快中断 (fiq)这五种模式称为这五种模式称为异常模式异常模式。它们除。它们除了可以通过程序切换进入外,也可了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的器,以避免异常退出时用户模式的状态不可靠。状态不可靠。1.1 1.1 处理器模式处理器模式n用户和系统
16、模式用户和系统模式处理器模式说明备注 用户 (usr)正常程序工作模式不能直接切换到其它模式 系统 (sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权 快中断 (fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响应时进入此模式 管理 (svc)操作系统保护代码系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式这两种模式都不能由异常进入,而这两种模式都不能由异常进入,
17、而且它们使用完全相同的寄存器组。且它们使用完全相同的寄存器组。系统模式是系统模式是特权模式特权模式,不受用户模,不受用户模式的限制。操作系统在该模式下访式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。使用这个模式访问一些受控的资源。 系统系统 (sys) 用户用户 (usr)1.1 1.1 处理器模式处理器模式处理器启动时的模式转换图处理器启动时的模式转换图管理模式管理模式SVC(Supervisor)多种特权模式变化多种特权模式变化用户程序的运行模式用户程序的
18、运行模式 复位后复位后缺省模式缺省模式主要完成各主要完成各模式的堆栈模式的堆栈设置,注意设置,注意不要进入用不要进入用户模式户模式一般为用户一般为用户模式模式User1.1 1.1 处理器模式处理器模式1.2 ARM1.2 ARM微处理器的寄存器介绍微处理器的寄存器介绍nARMARM处理器共有处理器共有3737个个寄存器,被分为若干个组寄存器,被分为若干个组(BANKBANK),这些寄存器包括:),这些寄存器包括:3131个通用寄存器,个通用寄存器,包括程序计数器(包括程序计数器(PCPC指针),指针),均为均为3232位的寄存器。位的寄存器。6 6个状态寄存器,个状态寄存器,用以标识用以标识
19、CPUCPU的工作状态及程的工作状态及程序的运行状态,均为序的运行状态,均为3232位,目前只使用了其中位,目前只使用了其中的一部分。的一部分。1.2 ARM1.2 ARM微处理器的寄存器介绍微处理器的寄存器介绍nARMARM处理器又有处理器又有7 7种种不同的处理器模式,在每一种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与之对应。处理器模式下均有一组相应的寄存器与之对应。n即在任意一种处理器模式下,可访问的寄存器包即在任意一种处理器模式下,可访问的寄存器包括括1515个通用寄存器(个通用寄存器(R0R0R14R14)、)、1 12 2个程序状态个程序状态寄存器和程序计数器(寄
20、存器和程序计数器(PCPC)。)。n在所有的寄存器中,有些是在在所有的寄存器中,有些是在7 7种处理器模式下共种处理器模式下共用的用的同一个物理寄存器同一个物理寄存器,而有些寄存器则是在不,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。同的处理器模式下有不同的物理寄存器。1.2 1.2 寄存器介绍寄存器介绍nARMARM微处理器中的寄存器不能被同时访问,具体哪微处理器中的寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决些寄存器是可编程访问的,取决微处理器的工作微处理器的工作状态状态及及具体的运行模式具体的运行模式。n但在任何时候,通用寄存器但在任何时候,通用寄存器R0R0R1
21、4R14、程序计数器、程序计数器PCPC、一个或两个状态寄存器都是可访问的。、一个或两个状态寄存器都是可访问的。 寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_ir
22、qR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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,
23、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_irqSPSR_fiqR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10
24、R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSR所有的所有的3737个寄存器,分个寄存器,分成两大类:成两大类:3131个通用个通用3232位寄存器;位寄存器;6 6个状态寄存器。个状态寄存器。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR1
25、0(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_svcSPSR_abt SPSR_undSPSR_irqSPSR_fiq无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户用户无无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3
26、R2R1R0系统系统SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_
27、fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断快中断1.2 ARM1.2 ARM状态下的寄存器组织状态下的寄存器组织1.1.通用寄存器通用寄存器通用寄存器包括通用寄存器包括R0R0R15R15,可以分为三类:,可以分为三类:未分组寄存器未分组寄存器R0R0R7R7;分组寄存器分组寄存器R8R8R14R14;程序计数器程序计数器PC(R15)PC(R15)。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R
28、6(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_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR1
29、3R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在汇编语言中寄存器在汇编语言中寄存器R0R13为保存数据或地址值为保存数据或地址值的的通用寄存器通用寄存器。它们是完。它们是完全通用的寄存器,不会被全通用的寄存器,不会被体系结构作为特殊用途,体系结构作为特殊用途,并且可用于任何使用通用并且可用于任何使用通用寄存器的指令。寄存器的指令。1.2 ARM1.2 ARM状态下的寄存器组织状态下的寄存器组织2.2.未分组寄存器未分组寄存器R0R0R7R7在所有的运行模式下,未分组寄存器都指向在所有的运行模式下,未分组寄存器都指向
30、同一个物理寄存器同一个物理寄存器,他们未被系统用作特殊的用,他们未被系统用作特殊的用途。途。 因此,在中断或异常处理进行运行模式转换因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。一点在进行程序设计时应引起注意。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2
31、)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_undSPSR_irqSPSR_fiqR7R6R5R4R3R2R1R0其中其中R0R7为为未分组未分组的
32、寄存器的寄存器,也就是说对,也就是说对于任何处理器模式,这于任何处理器模式,这些寄存器都对应于相同些寄存器都对应于相同的的32位物理寄存器。位物理寄存器。3.3.分组寄存器分组寄存器R8R8R14R14对于分组寄存器,他们每一次所访问的物理寄存器与对于分组寄存器,他们每一次所访问的物理寄存器与处理器当前的运行模式有关。处理器当前的运行模式有关。对于对于R8R8R12R12来说,每个寄存器对应来说,每个寄存器对应两个两个不同的物理不同的物理寄存器。当使用寄存器。当使用fiqfiq模式时,访问寄存器模式时,访问寄存器R8_fiqR8_fiqR12_fiqR12_fiq;当使用除当使用除fiqfiq
33、模式以外的其他模式时,访问寄存器模式以外的其他模式时,访问寄存器R8_usrR8_usrR12_usrR12_usr。对于对于R13R13、R14R14来说,每个寄存器对应来说,每个寄存器对应6 6个不同的物理个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外寄存器,其中的一个是用户模式与系统模式共用,另外5 5个物理寄存器对应于其他个物理寄存器对应于其他5 5种不同的运行模式。种不同的运行模式。采用以下的记号来区分不同的物理寄存器:采用以下的记号来区分不同的物理寄存器:R13_R13_R14_R14_其中,其中,modemode为以下几种模式之一:为以下几种模式之一:usrusr、
34、fiqfiq、irqirq、svcsvc、abtabt、undund。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_
35、svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svc SPSR_abt SPSR_undSPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器寄存器R8R8R14R14为为分组寄存器分组寄存器。它们所对应的物理寄存器取决它们所对应的物理寄存器取决于当前的处理器模式,几乎所于当前的处理器模式
36、,几乎所有允许使用通用寄存器的指令有允许使用通用寄存器的指令都允许使用分组寄存器都允许使用分组寄存器寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_fi
37、qR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abt SPSR_undSPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器寄存器R8R12有两个分组的物理寄有两个分组的物理寄存器。一个用于除存器。一个用于除FIQ模式之外的所模式之外的所有寄存器模式,另一个用于有寄存器模式,另一个用于FIQ模式。模式。这样在发生这样在发生FIQ中断后,可以加速中断后,可以加速FIQ的处理速度。的处理速度。寄存
38、器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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
39、)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abt SPSR_undSPSR_irqSPSR_fiq寄存器寄存器R13、R14分别有分别有6个分组的物个分组的物理寄存器。一个用于用户和系统模式,理寄存器。一个用于用户和系统模式,其余其余5个分别用于个分别用于5种异常模式。种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13n寄存器寄存器R13R13在在ARMARM指令中常用作堆栈指针,但这只指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器
40、作是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。为堆栈指针。n而在而在ThumbThumb指令集中,某些指令强制性的要求使用指令集中,某些指令强制性的要求使用R13R13作为堆栈指针。作为堆栈指针。 寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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)
41、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_irqSPSR_fiq堆栈指针寄存器堆栈指针寄存器R13(SP)寄存器寄存器R13常作为常作为堆栈指针(堆栈指针(SP)nR14R14也称作子程序链接寄存器(也称作子程序链接寄存器(Subroutine Link Subroutine Link RegisterRegister)
42、或链接寄存器)或链接寄存器LRLR。n当执行当执行BLBL子程序调用指令时,子程序调用指令时,R14R14中得到中得到R15R15(程(程序计数器序计数器PCPC)的备份。)的备份。n其他情况下,其他情况下,R14R14用作通用寄存器。与之类似,当用作通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器发生中断或异常时,对应的分组寄存器R14_svcR14_svc、R14_irqR14_irq、R14_fiqR14_fiq、R14_abtR14_abt和和R14_undR14_und用来保存用来保存R15R15的返回值。的返回值。寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户
43、系统管理中止未定义中断快中断通用寄存器和程序计数器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_
44、svc SPSR_abt SPSR_und SPSR_irqSPSR_fiq链接寄存器链接寄存器R14(LR)R14为为链接寄存器(链接寄存器(LR),),在结构上有在结构上有两个特殊功能:两个特殊功能:在每种模式下,模式自身的在每种模式下,模式自身的R14版本版本用于保存子程序返回地址;用于保存子程序返回地址;当发生异常时,将当发生异常时,将R14对应的异常模对应的异常模式版本设置为异常返回地址(有些异常式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。有一个小的固定偏移量)。寄存器寄存器R14R14常用在如下的情况:常用在如下的情况:在每一种运行模式下,都可用在每一种运行模式下,都
45、可用R14R14保存子程序保存子程序的返回地址,当用的返回地址,当用BLBL或或BLXBLX指令调用子程序时,将指令调用子程序时,将PCPC的当前值拷贝给的当前值拷贝给R14R14,执行完子程序后,又将,执行完子程序后,又将R14R14的值拷贝回的值拷贝回PCPC,即可完成子程序的调用返回。,即可完成子程序的调用返回。指令:指令:MOV PC,LR MOV PC,LR 寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v
46、4)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_undSPSR_irqSPSR_fiq程序计数器程序计数器R15(PC)寄存器寄存器R15常作为常作为程序计数器程序计数器(PC )。
47、R15虽然也可用作通用寄存器,但一虽然也可用作通用寄存器,但一般不这么使用,因为对般不这么使用,因为对R15的使用有的使用有一些特殊的限制,当违反了这些限制一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。时,程序的执行结果是未知的。 寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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,v
48、8)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 寄存器寄存器CPSRCPSR为为程序状态寄存器程序状态寄存器;在异常模;在异常模式中,另外一个寄存器式中,另外一个寄存器“备份备份程序状态寄存器程序状态寄存器(SPSRSPSR)”可以被访问。每种异常都有自己的可以被
49、访问。每种异常都有自己的SPSRSPSR,在因为异常事件而进入异常时它保存,在因为异常事件而进入异常时它保存CPSRCPSR的当前值,异常退出时可通过它恢复的当前值,异常退出时可通过它恢复CPSRCPSR。n程序状态寄存器程序状态寄存器CPSR(1)+SPSR(5)CPSR(1)+SPSR(5)CPSRCPSR反映了当前处理器的状态:反映了当前处理器的状态:个条件代码标志;个条件代码标志;2 2个中断控制位;个中断控制位;5 5个对当前处理器模式进行编码的位;个对当前处理器模式进行编码的位;1 1个指示当前执行指令的工作状态位;个指示当前执行指令的工作状态位;保留位。保留位。SPSRSPSR:
50、备份程序状态字,保存异常事件发备份程序状态字,保存异常事件发生之前的生之前的CPSRCPSR每个异常模式带有一个备份程序状态每个异常模式带有一个备份程序状态寄存器,用于保存在异常事件发生之前寄存器,用于保存在异常事件发生之前的的CPSRCPSR;CPSRCPSR和和SPSRSPSR通过特殊指令进行通过特殊指令进行访问。访问。1.2 1.2 程序状态寄存器程序状态寄存器NZCV IM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 0条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVITFCPSR寄存器
51、的格式大多数大多数“数值处理指令数值处理指令”可以可以选择是否影响条件代码标志位(指选择是否影响条件代码标志位(指令带令带S S后缀);但有些指令执行总是后缀);但有些指令执行总是影响条件代码标志。影响条件代码标志。 所有所有ARMARM指令都可按条件来执指令都可按条件来执行,而行,而ThumbThumb指令中只有分支指令指令中只有分支指令可按条件执行。可按条件执行。运算结果的最高位反映在该运算结果的最高位反映在该标志位。对于有符号二进制补码,标志位。对于有符号二进制补码,结果为负数时结果为负数时N=1N=1,结果为正数,结果为正数或零时或零时N=0N=0;指令结果为0时Z=1(表示比较结果“
52、相等”),否则Z=0;当进行加法运算,并且最高位当进行加法运算,并且最高位产生进位时产生进位时C=1C=1,否则,否则C=0C=0。当进行减法运算,并且最高位当进行减法运算,并且最高位产生借位时产生借位时C=0C=0,否则,否则C=1C=1。对于移位操作指令,对于移位操作指令,C C为从最高为从最高位最后移出的值,其它指令位最后移出的值,其它指令C C通常通常不变;不变;当进行加法当进行加法/减法运算,减法运算,并且发生有符号溢出时并且发生有符号溢出时V=1,否则,否则V=0,其它指,其它指令令V通常不变。通常不变。保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR标志和控制位时,请
53、不要改变这些保留位。另外,请确保您程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。 1.2 1.2 程序状态寄存器程序状态寄存器CPSRCPSR模式位设置表模式位设置表M4:0M4:0模式模式M4:0M4:0模式模式1000010000用户用户1011110111中止中止1000110001快中断快中断1101111011未定义未定义1001010010中断中断1111111111系统系统1001110011管理管理注意:注意:不是所有模式位的组合都定义了有效的处理器不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢模式,如果使用了
54、错误的设置,将引起一个无法恢复的错误。复的错误。1.3 ARM1.3 ARM微处理器的工作状态微处理器的工作状态nARMARM微处理器的体系结构中支持两种指令集:微处理器的体系结构中支持两种指令集:ARMARM指令集和指令集和ThumbThumb指令集。指令集。nARMARM指令为指令为3232位的长度位的长度nThumbThumb指令为指令为1616位长度位长度nThumbThumb指令集为指令集为ARMARM指令集的功能子集,但与等价指令集的功能子集,但与等价的的ARMARM代码相比较,可节省代码相比较,可节省30304040以上的存储以上的存储空间,同时具备空间,同时具备3232位代码的
55、所有优点。位代码的所有优点。1.4 1.4 数据长度数据长度ARMARM处理器支持下列数据类型:处理器支持下列数据类型:n字节型数据(字节型数据(ByteByte):数据宽度为):数据宽度为8bits8bits。n半字数据类型(半字数据类型(HalfWordHalfWord):数据宽度为):数据宽度为16bits16bits。n字数据类型(字数据类型(WordWord):数据宽度为):数据宽度为32bits32bits。其中,字需要其中,字需要4 4字节对齐(地址的低两位为字节对齐(地址的低两位为0 0)、半字)、半字需要需要2 2字节对齐(地址的最低位为字节对齐(地址的最低位为0 0)。)。
56、1.5 1.5 存储管理单元存储管理单元-MMU -MMU 在复杂的嵌入式系统设计时,越来越多的在复杂的嵌入式系统设计时,越来越多的会选用带有存储管理单元(会选用带有存储管理单元(MMUMMU)的微处理器)的微处理器芯片。芯片。MMUMMU完成的主要功能有:完成的主要功能有:将主存地址从虚拟存储空间映射到物理存储将主存地址从虚拟存储空间映射到物理存储空间。空间。存储器访问权限控制。存储器访问权限控制。设置虚拟存储空间的缓冲特性等。设置虚拟存储空间的缓冲特性等。1.5 1.5 存储管理单元存储管理单元-MMU-MMUn虚拟地址存储系统示意图虚拟地址存储系统示意图逻辑地址逻辑地址对换对换主存主存辅助存储器辅助存储器物理地址物理地址MMU微微处处理理器器1.5 ARM1.5 ARM体系结构的存储器格式体系结构的存储器格式nARMA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025标准购房合同样本
- 工程项目管理相关理论试题及答案
- 提高水利水电工程应试能力试题及答案
- 经济法概论关键问题试题及答案
- 2025年经济法的核心价值试题及答案
- 2025科技有限公司信息技术服务采购合同书
- 全面提高经济法试题及答案技巧
- DB3502T 120-2024 智慧安防小区+前端安防物联感知设备及服务平台安全规范
- 经济师专业知识的深化试题及答案
- 施工安全与防护技术综述试题及答案
- 公司章程模板五篇
- OBE理念下生成式AI技术在高校财会教育中的应用路径研究
- 2024年云服务器运维服务合同样本
- 班级荣誉与成长模板
- IATF16949-2016体系管理质量手册(压铸铝合金)
- 创业人生学习通超星期末考试答案章节答案2024年
- 超职数配备干部整改方案
- 中药材、中药饮片分类贮存常温库货品名称目录
- 中考模拟考试实施方案
- (部编版)统编版小学语文教材目录(一至六年级上册下册齐全)
- 四川省南充市2023-2024学年六年级下学期期末英语试卷
评论
0/150
提交评论