嵌入式系统3(ARM基本编程模型)课件

上传人:沈*** 文档编号:241905334 上传时间:2024-08-04 格式:PPT 页数:62 大小:724.17KB
返回 下载 相关 举报
嵌入式系统3(ARM基本编程模型)课件_第1页
第1页 / 共62页
嵌入式系统3(ARM基本编程模型)课件_第2页
第2页 / 共62页
嵌入式系统3(ARM基本编程模型)课件_第3页
第3页 / 共62页
点击查看更多>>
资源描述
嵌入式系统嵌入式系统第三讲第三讲ARM基本编程模型基本编程模型本本节内容内容ARM简介简介ARM处理器的工作状态处理器的工作状态ARM处理器的运行模式处理器的运行模式ARM处理器的寄存器组织处理器的寄存器组织Thumb状态下的寄存器状态下的寄存器西安电子科技大学计算机学院2西安电子科技大学计算机学院31.1ARM的的发展展历史史1985年年4月月26日,第一个日,第一个ARM原型在英国剑桥的原型在英国剑桥的Acorn计算机有限公司诞生,由美国加州计算机有限公司诞生,由美国加州SanJoseVLSI技术公司制造技术公司制造20世纪世纪80年代后期,年代后期,ARM很快开发成很快开发成Acorn的台的台式机产品,形成英国的计算机教育基础式机产品,形成英国的计算机教育基础1990年成立了年成立了AdvancedRISCMachinesLimitedARM=AdvancedRISCMachines西安电子科技大学计算机学院4ARM的的发展展历史史20世纪世纪90年代,年代,ARM32位嵌人式位嵌人式RISC(ReducedInstructionSetComputer)处)处理器扩展到世界范围,占据了低功耗、低成本和高理器扩展到世界范围,占据了低功耗、低成本和高性能的嵌入式系统应用领域的领先地位,特别是性能的嵌入式系统应用领域的领先地位,特别是ARM嵌入式微处理器系列。嵌入式微处理器系列。ARM公司虽然只成立公司虽然只成立10多年,但在多年,但在1999年因移动年因移动电话市场火爆,其电话市场火爆,其32位位RISC处理器占市场份额超处理器占市场份额超过了过了50%,2001年初,年初,ARM公司的公司的32位位RISC处理处理器市场占有率超过了器市场占有率超过了75%。ARM公司是知识产权公司是知识产权供应商,是设计公司。由合作伙伴公司来生产各具供应商,是设计公司。由合作伙伴公司来生产各具特色的芯片。特色的芯片。西安电子科技大学计算机学院5ARM的的发展展历史史ARM公司商业模式的强大之处在于其价格合理,公司商业模式的强大之处在于其价格合理,全世界范围有超过全世界范围有超过100个合作伙伴个合作伙伴包括半导体包括半导体工业的著名公司。工业的著名公司。ARM公司专注于设计,其内核公司专注于设计,其内核耗电少、成本低、功能强,特有耗电少、成本低、功能强,特有16/32位双指令集。位双指令集。ARM已成为移动通信、手持计算、多媒体数字消已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的费等嵌入式解决方案的RISC标准。标准。在所有在所有ARM处理器系列中,处理器系列中,ARM7处理器系列应处理器系列应用最广,采用用最广,采用ARM7处理器作为内核生产芯片的公处理器作为内核生产芯片的公司最多。司最多。西安电子科技大学计算机学院6ARM的的发展展历史史1991-ARM推出第一款推出第一款RISC嵌入式微处理嵌入式微处理器器ARM61993-ARM推出推出ARM71995ARM的的Thumb扩展指令集结构为扩展指令集结构为16位系统增加了位系统增加了32位的性能,提供业界领先位的性能,提供业界领先的代码密度的代码密度西安电子科技大学计算机学院7ARM的的发展展历史史西安电子科技大学计算机学院81.2ARM的含的含义ARM是公司名称是公司名称ARM是一种处理器架构是一种处理器架构ARM是一种技术是一种技术ARM是注册商标是注册商标西安电子科技大学计算机学院91.3ARM的特点的特点ARM处理器的特点如下处理器的特点如下q小体积、低功耗、低成本、高性能qLoad/Store体系结构q16位/32位双指令集q3地址指令格式q全球众多的合作伙伴(自己只设计高性能的IP核,授权给别人生产)西安电子科技大学计算机学院10众多的合作伙伴众多的合作伙伴西安电子科技大学计算机学院111.4ARM体系体系结构版本构版本V1q基本数据处理q字节,字以及多字load/storeq软件中断q26 bit 地址总线V2qMultiply&Multiply-accumulateq支持协处理器q支持线程同步q26 bit 地址总线西安电子科技大学计算机学院12ARM体系体系结构版本构版本V3q推出32位寻址能力q增加两种异常模式q增强型乘法器,产生全64位结果(32X3264or32X32+64 64)V4q增加了半字load和store指令qT16位压缩指令集西安电子科技大学计算机学院13ARM体系体系结构版本构版本V5q提高了ARM和Thumb之间的交互效率q增加了前导零计数指令q增加了BKPT(软件中断)指令V6q降低耗电量q多媒体处理扩展使MPEG4编码/解码加快一倍音频处理加快一倍q支持多微处理器内核qARM11采用V6西安电子科技大学计算机学院14ARM体系体系结构版本构版本V7qARMv7架构是在ARMv6架构的基础上诞生的q采用了Thumb-2技术(Thumb-2技术比纯32位代码少使用31的内存,减小了系统开销,同时能够提供比已有的基于Thumb 技术的解决方案高出38的性能)q放弃过去的数字命名方式,而冠以CortexCortex-ACortex-RCortex-MARM体系体系结构版本构版本V8q将64位架构支持引进ARM结构q两种执行状态AArch64:64位执行状态AArch32:32位执行状态q三个主要指令集A64:一种支持 AArch64 执行状态的全新 32 位固定长度指令集(支持64位操作数)A32:ARM指令T16:Thumb指令西安电子科技大学计算机学院15西安电子科技大学计算机学院16ARM体系体系结构版本构版本体系结构的演变体系结构的演变qT变种-16位压缩指令集qM变种-增强型乘法器,产生全64位结果(32*32=64 or 32*32+64=64)qE变种-增强型DSP指令集,包括全部算法操作和16位乘法操作qJ变种-支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能qSIMD变种-媒体功能扩展qD变种-支持片上DebugqI变种-EmbededICE硬件,以支持片上断点和观察点qS-表示可综合的“软”IP核西安电子科技大学计算机学院171.5Thumb技技术Thumb开发背景开发背景qRISC代码密度低(需要比较大的存储器空间)q高端消费类产品需要32位RISC处理器的性能和更优于16位CISC处理器的代码密度Thumb技术概述技术概述q16位的指令长度q32位的执行效率西安电子科技大学计算机学院18Thumb技技术Thumb技术特点技术特点q支持Thumb的核有2套独立的指令集qARM32位指令的性能qThumb16位的代码密度q设计者可在性能和代码密度之间取得平衡西安电子科技大学计算机学院191.6ARM处理器家族理器家族微处理器核微处理器核qARM7系列(v4T)qARM9系列(v4T)qARM9E系列(v5TE)qARM10E系列(v5TE)qARM11系列(v6T)qCortex系统(v7T)qSecurCore系列 qStrongARM系列 qXscale系列 西安电子科技大学计算机学院201.6.1ARM7系列系列 该系列主要微处理器包括:该系列主要微处理器包括:qARM7TDMIqARM7TDMI-SqARM720TqARM7EJ-S采用采用ARMV4T(Neuman)结构,分为三)结构,分为三级流水,支持级流水,支持16位的位的Thumb指令集指令集 主要应用于工业控制、主要应用于工业控制、Internet设备、网络设备、网络和调制解调器设备、移动电话等嵌入式应和调制解调器设备、移动电话等嵌入式应用用 西安电子科技大学计算机学院211.6.2ARM9系列系列该系列微处理器包含:该系列微处理器包含:qARM920TqARM922TqARM940T采用采用ARMV4T(Harvard)结构,五级流)结构,五级流水处理以及分离的水处理以及分离的Cache结构结构 主要应用于无线设备、仪器仪表、安全系主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和统、机顶盒、高端打印机、数字照相机和数字摄像机等数字摄像机等 西安电子科技大学计算机学院221.6.3ARM9E系列系列该系列微处理器包括该系列微处理器包括qARM926EJ-SqARM946E-SqARM966E-S使用单一的处理器内核提供了微控制器、使用单一的处理器内核提供了微控制器、DSP、Java应用系统的解决方案应用系统的解决方案 主要应用于下一代无线设备、数字消费品、主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储设备和网络设成像设备、工业控制、存储设备和网络设备等领域备等领域 西安电子科技大学计算机学院231.6.4ARM10E系列系列该系列微处理器包含:该系列微处理器包含:qARM1020EqARM1022EqARM1026EJ-S 采用了新的体系结构(采用了新的体系结构(ARMV5),与相同),与相同工艺条件下的工艺条件下的ARM9器件相比较,在同样的器件相比较,在同样的时钟频率下,性能提高了近时钟频率下,性能提高了近50%主要应用于下一代无线设备、数字消费品、主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等成像设备、工业控制、通信和信息系统等领域领域 西安电子科技大学计算机学院241.6.5ARM11系列系列ARM11是是ARM家族中性能较好的一个系列家族中性能较好的一个系列ARM11采用采用ARMv6结构结构增加了是静、动态组合的跳转预判增加了是静、动态组合的跳转预判ARM11囊括了囊括了Thumb-2,CoreSight,TrusZone等众多业界领先技术,同时由等众多业界领先技术,同时由单一的处理器内核向多核发展,为高端的单一的处理器内核向多核发展,为高端的嵌入式应用提供了强大的处理平台嵌入式应用提供了强大的处理平台 西安电子科技大学计算机学院251.6.6Cortex系列系列Cortex-Aq面向尖端的基于虚拟内存的操作系统和用户应用,如应用像Linux、Windows CE和Symbian等操作系统的消费娱乐产品和无线产品Cortex-Rq面向需要运行实时操作系统来进行控制应用的系统,包括汽车电子、网络和影像系统 Cortex-Mq面向那些对开发费用非常敏感同时对性能要求不断增加的嵌入式应用(如微控制器、汽车车身控制系统和各种大型家电)西安电子科技大学计算机学院261.6.7SecurCore系列系列该系列微处理器包含:该系列微处理器包含:qSecurCoreSC100qSecurCoreSC110qSecurCoreSC200qSecurCoreSC210 提供了基于高性能提供了基于高性能32位位RISC技术的安全解技术的安全解决方案决方案 主要应用于一些安全产品及应用系统,包主要应用于一些安全产品及应用系统,包括电子商务、电子银行业务、网络、移动括电子商务、电子银行业务、网络、移动媒体和认证系统等媒体和认证系统等 西安电子科技大学计算机学院271.6.8StrongARM系列系列StrongARM系列微处理器融合了系列微处理器融合了Intel公司公司的设计和处理技术以及的设计和处理技术以及ARM体系结构特点。体系结构特点。IntelStrongARM系列处理器是便携式通讯系列处理器是便携式通讯产品和消费类电子产品的理想选择,已成产品和消费类电子产品的理想选择,已成功应用于多家公司的掌上电脑系列产品功应用于多家公司的掌上电脑系列产品 。西安电子科技大学计算机学院281.6.9Xscale系列系列Xscale系列处理器是基于系列处理器是基于ARMv5TE体系结体系结构的解决方案,是一款全性能、高性价比、构的解决方案,是一款全性能、高性价比、低功耗的处理器。它支持低功耗的处理器。它支持16位的位的Thumb指指令和令和DSP指令集,己经使用在数字移动电指令集,己经使用在数字移动电话、个人数字助理和网络产品等场合。话、个人数字助理和网络产品等场合。Xscale系列处理器是系列处理器是Intel目前主要推广的目前主要推广的一款一款ARM微处理器。微处理器。西安电子科技大学计算机学院29西安电子科技大学计算机学院302.ARM处理器的工作状理器的工作状态第一种为第一种为ARM状态状态q此时处理器执行32位的字对齐的ARM指令;第二种为第二种为Thumb状态状态q此时处理器执行16位的、半字对齐的 Thumb 指令;在程序的执行过中,可随时在两种工作状在程序的执行过中,可随时在两种工作状态之间切换态之间切换西安电子科技大学计算机学院31状状态切切换方法方法ARM和和Thumb指令集均有切换处理器状态的指令,并可在指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,但两种工作状态之间切换,但ARM微处理器在开始执行代码时,微处理器在开始执行代码时,应该处于应该处于ARM状态,执行异常时也应处于状态,执行异常时也应处于ARM状态。状态。进入进入Thumb状态:当操作数寄存器的状态位(位状态:当操作数寄存器的状态位(位0)为)为1时,时,可以采用执行可以采用执行BX指令的方法,使微处理器从指令的方法,使微处理器从ARM状态切换状态切换到到Thumb状态。此外,当处理器处于状态。此外,当处理器处于Thumb状态时发生异状态时发生异常(如常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理等),则异常处理返回时,自动切换到返回时,自动切换到Thumb状态。状态。进入进入ARM状态:当操作数寄存器的状态位为状态:当操作数寄存器的状态位为0时,执行时,执行BX指指令时可以使微处理器从令时可以使微处理器从Thumb状态切换到状态切换到ARM状态。此外,状态。此外,在处理器进行异常处理时,把在处理器进行异常处理时,把PC指针放入异常模式链接寄存指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切器中,并从异常向量地址开始执行程序,也可以使处理器切换到换到ARM状态。状态。西安电子科技大学计算机学院322.1字的字的长度度字(字(Word):):q字的长度为32位,而在8位/16位处理器体系结构中,字的长度一般为16位。q字必须排成四字节对齐半字(半字(Half-Word):):q半字的长度为16位,与8位/16位处理器体系结构中字的长度一致 q半字必须排成两字节对齐字节(字节(Byte):):q在ARM体系结构和8位/16位处理器体系结构中,字节的长度均为8位西安电子科技大学计算机学院332.2指令指令长度度32位指令位指令-A32(ARM状态下)状态下)16位指令位指令-T16(Thumb状态下)状态下)64位指令位指令-A64(AArch64,64位执行状态)位执行状态)西安电子科技大学计算机学院343.ARM处理器的运行模式理器的运行模式34处理器模式说明备注用户(usr)正常程序工作模式不能直接切换到其它模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式中断(irq)用于通用中断处理IRQ异常响应时进入此模式管理(svc)操作系统保护代码系统复位和软件中断响应时进入此模式中止(abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有多大用处未定义(und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式西安电子科技大学计算机学院35特特权模式和异常模式模式和异常模式特权模式:特权模式:q除了用户模式外,其它模式都是特权模式;异常模式:异常模式:q除了系统模式外的特权模式是异常模式。西安电子科技大学计算机学院36系系统模式与异常模式模式与异常模式系统模式运行特权操作系统任务。系统模式运行特权操作系统任务。q存在于ARMv4及以上体系结构版本。q与用户模式有完全相同的寄存器组,操作系统任务可访问所有需要的系统资源而不受用户模式限制。异常模式主要处理中断和异常。异常模式主要处理中断和异常。q当应用程序发生异常中断时,处理器进入相应的异常模式。q每一种异常模式中都有某些附加的影子寄存器组供相应的异常处理程序使用。西安电子科技大学计算机学院374.处理器的寄存器理器的寄存器组织ARM有37个32位长的寄存器:q1个用作PC(program counter);q30个用作一般通用寄存器;q 1个用作CPSR(current program status register);q5个用作SPSR(saved program status registers)。这些寄存器不能被同时访问;与微处理器的这些寄存器不能被同时访问;与微处理器的工作状态工作状态及具体的及具体的运行模式运行模式有关。有关。通用寄存器通用寄存器R0R14、程序计数器、程序计数器PC、一、一个或两个状态寄存器通常是可访问的。个或两个状态寄存器通常是可访问的。37西安电子科技大学计算机学院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)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARMARM状态各模式下的寄存器状态各模式下的寄存器状态各模式下的寄存器状态各模式下的寄存器西安电子科技大学计算机学院39寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARMARM状态各模式下的寄存器状态各模式下的寄存器状态各模式下的寄存器状态各模式下的寄存器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个状态寄存器。西安电子科技大学计算机学院40寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用户用户无CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系统系统SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定义未定义SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中断中断SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中断快中断ARMARM状态各模式下可以访问的寄存器状态各模式下可以访问的寄存器状态各模式下可以访问的寄存器状态各模式下可以访问的寄存器西安电子科技大学计算机学院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_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_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器一般的通用寄存器一般的通用寄存器一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在汇编语言中寄存器R0R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。西安电子科技大学计算机学院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_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15状态寄存器CPSRCPSRSPSR无SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器一般的通用寄存器一般的通用寄存器一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。西安电子科技大学计算机学院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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器一般的通用寄存器一般的通用寄存器一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器西安电子科技大学计算机学院44寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器一般的通用寄存器一般的通用寄存器一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。西安电子科技大学计算机学院45寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器一般的通用寄存器一般的通用寄存器一般的通用寄存器寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13西安电子科技大学计算机学院46寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆栈指针寄存器堆栈指针寄存器堆栈指针寄存器堆栈指针寄存器R13R13(SPSP)寄存器R13常作为堆栈指针(SP)。在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。在Thumb指令集中存在使用R13的指令。西安电子科技大学计算机学院47堆堆栈指指针SP(R13)R13在在ARM指令中常用作堆栈指针指令中常用作堆栈指针SP,但这只是,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。栈指针。在在Thumb指令集中,某些指令强制性的要求使用指令集中,某些指令强制性的要求使用R13作为堆栈指针。作为堆栈指针。由于处理器的每种运行模式均有自己独立的物理寄由于处理器的每种运行模式均有自己独立的物理寄存器存器R13,在初始化部分,都要初始化每种模式下,在初始化部分,都要初始化每种模式下的的R13,这样,当程序的运行进入异常模式时,可,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入以将需要保护的寄存器放入R13所指向的堆栈,而所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。当程序从异常模式返回时,则从对应的堆栈中恢复。西安电子科技大学计算机学院48寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq链接寄存器链接寄存器链接寄存器链接寄存器R14R14(LRLR)R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。西安电子科技大学计算机学院49子程序子程序连接寄存器接寄存器LR(R14)R14也称作子程序连接寄存器或连接寄存器也称作子程序连接寄存器或连接寄存器LR。当执行当执行BL子程序调用指令时,可以从子程序调用指令时,可以从R14中得到中得到R15(程序计数器(程序计数器PC)的备份。其他情况下,)的备份。其他情况下,R14用作通用寄存器。用作通用寄存器。在每一种运行模式下,都可用在每一种运行模式下,都可用R14保存子程序的返保存子程序的返回地址,当用回地址,当用BL或或BLX指令调用子程序时,指令指令调用子程序时,指令先将下一条指令的先将下一条指令的PC值拷贝给值拷贝给R14;当执行完子;当执行完子程序后,再将程序后,再将R14的值拷贝回的值拷贝回PC,即可完成子程,即可完成子程序的调用返回。序的调用返回。R14还用于异常处理的返回。还用于异常处理的返回。西安电子科技大学计算机学院50例子例子BL SUB1 /*调用子程序调用子程序SUB1*/reAdd:/*返回地址返回地址*/SUB1:STMFD SP!,LR/*将寄存器列将寄存器列表和表和R14存入堆栈存入堆栈*/LDMFD SP,PC/*完成子程序返回完成子程序返回*/或或 MOV PC,LR /*R14R15,即即LRPC*/或或 BX LR /*跳转指令跳转指令 LRPC*/西安电子科技大学计算机学院51寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序计数器程序计数器程序计数器程序计数器R15R15(PCPC)寄存器寄存器R15R15为程序计数器(为程序计数器(PCPC),它指向正),它指向正在取指的地址。可以认为它是一个通用寄存在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的器,但是对于它的使用有许多与指令相关的限制或特殊情况。如果限制或特殊情况。如果R15R15使用的方式超出使用的方式超出了这些限制,那么结果将是不可预测的。了这些限制,那么结果将是不可预测的。西安电子科技大学计算机学院52程序程序计数器数器PC(R15)ARM状态下,位状态下,位1:0为为0,位,位31:2保存保存PC;Thumb状态下,位状态下,位0为为0,位,位31:1保存保存PC;R15虽然也可用作通用寄存器,但一般不这么使用,虽然也可用作通用寄存器,但一般不这么使用,因为对因为对R15的使用有一些特殊的限制,当违反了这些的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。限制时,程序的执行结果是未知的。由于由于ARM体系结构采用了多级流水线技术,对于体系结构采用了多级流水线技术,对于ARM指令集而言,指令集而言,PC总是指向当前指令的下几条指总是指向当前指令的下几条指令的地址,即令的地址,即PC的值为当前指令的地址值加的值为当前指令的地址值加8个字节。个字节。西安电子科技大学计算机学院53寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理中止未定义中断快中断通用寄存器和程序计数器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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序状态寄存器程序状态寄存器程序状态寄存器程序状态寄存器CPSRCPSR寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。西安电子科技大学计算机学院54程序状程序状态寄存器寄存器(CPSR/SPSR)R16寄存器寄存器R16用作当前程序状态寄存器用作当前程序状态寄存器CPSR(CurrentProgramStatusRegister),CPSR可在任何运行模式下可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。式标志位,以及其他一些相关的控制和状态位。每一种异常运行模式下又都有一个备用的物理状态寄存器,称为备份的程序状态寄存器SPSR(Saved Program Status Register),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。西安电子科技大学计算机学院55CPSR寄存器的格式寄存器的格式55NZCVIM0M1M2M3M4TF.31 30 29 28 27 26 8 7 6 5 4 3 2 1 0条件代码标志保留控制位溢出标志进位或借位扩展零负或小于IRQ禁止FIQ禁止状态位模式位NZCVIM0M1M2M3M4TF西安电子科技大学计算机学院56模式模式编码M4:0模式模式0b10000用户用户0b10001FIQ0b10010IRQ0b10011管理管理0b10111中止中止0b11011未定义未定义0b11111系统系统西安电子科技大学计算机学院57r0r1r2r3r4r5r6r7r8r9r10r11r12r13(sp)r14(lr)r15(pc)cpsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr8r9r10r11r12r13(sp)r14(lr)spsrFIQIRQSVCUndefAbortUser Moder0r1r2r3r4r5r6r7r8r9r10r11r12r13(sp)r14(lr)r15(pc)cpsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr8r9r10r11r12r13(sp)r14(lr)spsrCurrent Visible RegistersBanked out RegistersFIQIRQSVCUndefAbortr0r1r2r3r4r5r6r7r15(pc)cpsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr8r9r10r11r12r13(sp)r14(lr)spsrCurrent Visible RegistersBanked out RegistersUserIRQSVCUndefAbortr8r9r10r11r12r13(sp)r14(lr)FIQ ModeIRQ Moder0r1r2r3r4r5r6r7r8r9r10r11r12r15(pc)cpsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr8r9r10r11r12r13(sp)r14(lr)spsrCurrent Visible RegistersBanked out RegistersUserFIQSVCUndefAbortr13(sp)r14(lr)Undef Moder0r1r2r3r4r5r6r7r8r9r10r11r12r15(pc)cpsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr8r9r10r11r12r13(sp)r14(lr)spsrCurrent Visible RegistersBanked out RegistersUserFIQIRQSVCAbortr13(sp)r14(lr)SVC Moder0r1r2r3r4r5r6r7r8r9r10r11r12r15(pc)cpsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr8r9r10r11r12r13(sp)r14(lr)spsrCurrentVisibleRegistersBankedoutRegistersUserFIQIRQUndefAbortr13(sp)r14(lr)Abort Moder0r1r2r3r4r5r6r7r8r9r10r11r12r15(pc)cpsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr13(sp)r14(lr)spsrr8r9r10r11r12r13(sp)r14(lr)spsr当前可见寄存器当前可见寄存器备用寄存器备用寄存器UserFIQIRQSVCUndefr13(sp)r14(lr)ARM寄存器寄存器西安电子科技大学计算机学院585.Thumb状状态下的寄存器下的寄存器Thumb状态下的寄存器集是ARM状态集的子集,程序员可以直接访问的寄存器为:q8个通用寄存器R0R7;q程序计数器(PC);q堆栈指针(SP);q链接寄存器(LR);q有条件访问程序状态寄存器(CPSR)。58西安电子科技大学计算机学院59Thumb状状态下寄存器下寄存器组织西安电子科技大学计算机学院60两种状两种状态下的寄存器下的寄存器映射映射60R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆栈指针(R13)连接寄存器(R14)程序计数器(R15)低寄存器高寄存器西安电子科技大学计算机学院61CPSR模式位模式位设置表置表61M4:0模式可见的Thumb状态寄存器可见的ARM状态寄存器10000用户用户R0R7,SP,LR,PC,CPSRR0R14,PC,CPSR 10001快中断快中断R0R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiq R0R7,R8_fiqR14_fiq,PC,CPSR,SPSR_fiq 10010中断中断R0R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiq R0R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq 10011管理管理R0R7,SP_svc,LR_svc,PC,CPSR,SPSR_svc R0R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc 10111中止中止R0R7,SP_abt,LR_abt,PC,CPSR,SPSR_abt R0R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt 11011未定义未定义R0R7,SP_und,LR_und,PC,CPSR,SPSR_und R0R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系统系统R0R7,SP,LR,PC,CPSR R0R14,PC,CPSR 西安电子科技大学计算机学院62谢谢!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!