资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,2,章,ARM,体系结构,1,目录,2.1,总体介绍,2.2 ARM,处理器的分类,2.3,流水线(,pipeline,),2.4,模式(,model,),和寄存器,2.5,异常和异常向量表,2.6,存储组织,2.7,AMBA,总线,2,2.1,总体介绍,3,2.1.1 ARM,公司和,ARM,处理器,1,),ARM,是一个,CPU,内核。,ARM,公司自己并不生产或销售芯片,它采用技术授权模式,通过出售芯片技术授权,收取授权费和技术转让费。,2,)基于,ARM,内核的处理器是目前消费类电,子市场中占有量第一的处理器,尤其是,手机行业。,3,),ARM,是“,Advanced RISC Machine”,的缩写,最早的,ARM,处理器诞生于,80,年代的英国。,4,ARM PRODUCTE,5,ARM Partnership Model,6,2.1.3 ARM,处理器的特点,支持,CACHE,和,MMU,冯,诺依曼体系结构,/,哈佛体系结构,RISC,指令集,固定的,32,位指令,Load/Store,体系结构,大多数指令单周期完成,流水线执行,ThumbDSP,jazeller,功能扩展,低功耗,7,支持,CACHE,和,MMU(1),1,、为什么采用高速缓存,微处理器的时钟频率比内存速度提高快得多,高速缓存可以提高内存的平均性能。,2,、高速缓存的工作原理,高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。,CPU,高速缓存控制器,CACHE,主存,数据,数据,地址,8,MMU(Memory Management Unit),虚实地址变换,内存地址访问保护,支持,CACHE,和,MMU(2),9,指令寄存器,控制器,数据通道,输入,输出,中央处理器,存储器,程序,指令,0,指令,1,指令,2,指令,3,指令,4,数据,数据,0,数据,1,数据,2,冯,诺依曼体系结构模型,ARM7,10,1,)数据与指令都存储在同一存储区中,取指令与取数据利用同一数据总线。,2,)被早期大多数计算机所采用,3,),ARM7,冯诺依曼体系,结构简单,但速度较慢。取指不能同时取数据,11,指令寄存器,控制器,数据通道,输入,输出,中央处理器,程序存储器,指令,0,指令,1,指令,2,数据存储器,数据,0,数据,1,数据,2,地址,指令,地址,数据,哈佛体系结构,模型,ARM9 +,12,1,)程序存储器与数据存储器分开,.,2,)提供了较大的存储器带宽,各自有自己的总线。,3,)适合于数字信号处理,.,4,)大多数,DSP,都是哈佛结构,.,5,),ARM9,是哈佛结构,取指和取数在同一周期进行,提高速度,,13,RIS C,和,C IS C,是目前设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有:,RISC,是一种设计思想,其目的是设计出一套能在高时钟频率下但周期执行,简单而有效的指令集。降低硬件的复杂程度,提高对编译器的要求。,14,指令集,CISC,复杂指令集(,Complex Instruction Set Computer,),具有大量的指令和寻址方式,8/2,原则:,80%,的程序只使用,20%,的指令,大多数程序只使用少量的指令就能够运行。,CISC CPU,包含有丰富的单元电路,因而功能强、面积大、功耗大。,RISC,:精简指令集(,Reduced Instruction Set Computer),在通道中只包含最有用的指令,确保数据通道快速执行每一条指令,使,CPU,硬件结构设计变得更为简单,RISC CPU,包含较少的单元电路,因而面积小、功耗低,15,RISC与CISC,CISC,RISC,IF,ID,REG,ALU,MEM,开始,退出,IF,ID,ALU,MEM,REG,微操作通道,开始,退出,单通数据通道,16,寄存器,RISC,指令集拥有更多的通用寄存器,每个可以存放数据和地址,寄存器为所有的数据操作提供快速的存储访问。,CISC,指令集 多用于特定目的的专用寄存器。,17,LOAD STORE,结构,RISC,结构,CPU,仅处理寄存器中的数据,采用独立的、专用的,LOAD STORE,指令来完成数据在寄存器和外存之间的传送。(访存费时,处理和存储分开,可以反复的使用保存在寄存器中的数据,而避免多次访问外存)。,CISC,结构,能直接处理存储器中的数据。,18,流水线操作,流水线技术:几个指令可以并行执行 提高了,CPU,的运行效率 内部信息流要求通畅流动,译码,取指,执行,add,译码,取指,执行,sub,译码,取指,执行,cmp,时间,Add,Sub,Cmp,19,2.1.4,初始,ARM,结构,20,ARM,体系结构的演变发展,1998,2000,2002,2004,time,version,V5TE,V5TEJ,V6,1994,1996,2006,V4,V4T,ARM7TDMI,ARM926EJ,ARM1022E,XScale,TM,ARM1020,ARM1026EJ,ARM9E,ARM920T,ARM1136J(F),StrongARM,ARM720T,StrongARM,XScale,是英特尔持,的,有商标,21,ARM,架构(,Architecture,),THUMB,TM,DSP,Jazelle,TM,Media,不断创新以提升性能,THUMB,TM,:35%,代码压缩,DSP,扩充,:,定点,DSP,的高性能,Jazelle,TM,:Java,性能显著提高,最高到,8,倍,Media,扩充,:,音频,/,视频性能显著提高,最高到,4,倍,向下兼容以保护软件投入,Architecture,v4T,v5TE,v5TEJ,v6,特性集,22,2.1.5,命名的含义,标志,含义,说明,T,支持,Thumb,指令集,Thumb,指令集版本,1,:,ARMv4T,Thumb,指令集版本,2,:,ARMv5T,Thumb-2,:,ARMv6T,D,片上调试,M,支持长乘法,32,位乘,32,位得到,64,位,,32,位的乘加得到,64,位,I,Embedded ICE,E,DSP,指令,增加了,DSP,算法处理器指令:,16,位乘加指令,饱和的带符号数的加减法,双字数据操作,,cache,预取指令,J,Java,加速器,Jazelle,提高,java,代码的运行速度,S,可综合,提供,VHDL,或,Verilog,语言设计文件,23,ARM processors name,ARM 926EJ-S,Family number,7,:ARM7,9,:ARM9,10,:ARM10,11,:ARM11,Memory system,2,:Cache,MMU,Process ID,4,:Cache,MPU,6,:Write buffer,no cache,Memory size,0,:Cache size(4-128KB),2,:Reduced cache size,6,:TCM,Synthesizable,Extensions,E,:DSP extension,J,:Jazelle extension,T,:Thumb support,24,2.2 ARM,处理器的分类,25,2.2 ARM,处理器的分类,2.1,基于处理器内核的分类,ARM7T,,,ARM7E,,,ARM9,,,ARM9E,,,ARM10T,,,ARM10E,,,ARM11,2.2,基于指令集体系结构的分类,v4T,,,v5T,,,v5TE,,,v5TEJ,,,v6,26,2.2.1 ARM Core,(,ARM,核),处理器核,/,整数核,(Processor Core/Integer Core),:,ARM7TDMI,ARM9TDMI,ARM9E-S,,,ARM10TDMI,,,ARM10E,等。,ARM CPU,核,(ARM CPU Cores),:,ARM710T/720T/740T,ARM920T/940T,ARM946E-S,ARM966E-S,ARM1020E,等。,基于,ARM Core CPU,的应用处理器,,,比如:,Intel,的,PXA25x,,,Philip,的,lpc22xx,系列,,S,amsung,的,S3C44B0,等。,27,2.2.1.1 ARM7T和ARM7E Family,Unified Cache,内存管理,流水线级别,Thumb,DSP,Jazelle,ARM7TDMI,无,无,3,有,无,无,ARM7TDMI-S,无,无,3,有,无,无,ARM710T/720T,8k,MMU,3,有,无,无,ARM740T,8k或4k,Protection Unit,3,有,无,无,ARM7EJ-S,无,无,3,有,有,有,28,2.2.1.1 ARM7,系列的升级,Embedded Trace,Macrocell,-,ETM,29,2.2.1.2 ARM9 Family,Cache,内存管理,流水线级别,Thumb,DSP,Jazelle,ARM9TDMI,无,无,5,有,无,无,ARM920T,16K/16k,MMU,5,有,无,无,ARM922T,8k/8k,MMU,5,有,无,无,ARM940T,4k/4k,Protection Unit,5,有,无,无,30,2.2.1.2 ARM9,系列的升级,31,2.2.1.3 ARM9E Family,Cache,内存管理,流水线级别,Thumb,DSP,Jazelle,ARM9E-S,无,无,5,有,有,无,ARM946E-S,4k-1M/4k-1M,Protection Unit,5,有,有,无,ARM966E-S,无,无,5,有,有,无,ARM968E-S,无,无,5,有,有,无,ARM9EJ-S,无,无,5/6,有,有,有,ARM926EJ-S,14k-128k/4k-128k,MMU,5/6,有,有,有,32,2.2.1.3 ARM9E,系列的升级,ARM926EJ-S,ARM946E-S,ARM966E-S,33,2.2.1.4 ARM10E和ARM10T Family,ARM10EJ-S,无,无,6,有,有,有,ARM1026EJ-S,0,4-128k/0,4-128k,MMU,6,有,有,有,Cache,内存管理,流水线,级别,Thumb,DSP,Jazelle,ARM10E,无,无,6,有,有,无,ARM1020E,32k/32k,MMU,6,有,有,无,ARM1022E,16k/16k,MMU,6,有,有,无,ARM10TDMI,无,无,6,有,无,无,ARM1020T,32k/32k,MMU,6,有,无,无,34,2.2.1.5 ARM11 Family,Cache,内存管理,流水线级别,Thumb,DSP,Jazelle,浮点运算,ARM1136J-S,4-64k,MMU,8,有,有,有,无,ARM1136JF-S,4-64k,MMU,8,有,有,有,有,ARM1156T2-S,可配置,9,Thumb-2,有,无,无,ARM1156T2F-S,可配置,9,Thumb-2,有,无,有,35,2.1.6,StrongARM,和,XScale,SA-1110,(,基于,StrongARM,),内核,SA-1,16k I-Cache+8k D-Cache,I-MMU+D-MMU,PXA25x/26x/27x IXP2400(,基于,XScale,),内核,XScale,7/8,级流水线,32k I-Cache+32k D-Cache,I-MMU+D-MMU,36,2.2.2,指令集体系结构(,ISA,),Thumb,DSP,Jazelle,Media,TrustZone,Thumb-2,v4,StrongARM,v4T,*,ARM7T,ARM9,v5T,*,ARM10T,,,XScale,v5TE,*,*,ARM9E,ARM10E,v5TEJ,*,*,*,ARM7EJ,ARM9EJ,ARM10EJ,v6,*,*,*,*,ARM1136J(F)-S,v6Z,*,*,*,*,*,v6T2,*,*,*,*,*,ARM1156T2(F)-S,注:,v5T,支持的,Thumb,是对,v4T,中的,Thumb,的扩展,37,2.2.2,指令集体系结构,38,2.3,流水线(,pipeline,),39,流水线方式是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。,随着流水线的级数增加(深度),每一级的工作,量,减少这样处理器的工作在更高频率,同时也改善了性能。,但同时增加了延迟,因为在内核执行一条指令前,需要更多的周期来充填流水线。,流水线的级数增加也意味着在某些数据段之间产生数据相关。,40,2.3.1 ARM7,的流水线,指令流水线的目的是提高执行速度。,PC,指向的是预取指令,因此如果直接读取,PC,值,得到的是“当前指令地址,+8”,从内存中取指令,指令译码,执行指令,/,读写,REG,41,指令流水线,指令流水线的目的是提高执行速度。,PC,指向的是预取指令,因此如果直接读取,PC,值,得到的是,并不是,当前,正在执行的指令,地址,。,CUP,中的一条指令的执行可以分若干个阶段:,1.,取指,从存储器中取出指令(,fetch,),2.,译码,指令译码(,dec,),3.,取操作数,假定操作数从寄存器组中取(,reg,),4.,执行运算(,ALU,),5.,存储器访问(,mem,),6.,结果写回寄存器(,res,),各个阶段的操作相对都是独立的。因此,可以采用流水线的重叠技术,可以大大提高系统的性能。,42,ARM7TDMI Processor Core,冯,诺依曼,架构,三级流水线,快速中断响应,性能指标,:0.9 Dhrystone,MIPs,/MHz,EmbeddedICE,-RT,调试逻辑,No memory management,No cache,CPI=1.9,世界上使用最广泛的,32,位嵌入式内核,主要应用领域,:,个人音频设备,手机和移动通信终端,Modems,xDSL,Cable Modems,ATM and Ethernet,网络设备,打印机,数码相机,PDA,机顶盒,43,指令流水线,FETCH,DECODE,EXECUTE,从存储器读取指令,译码,读寄存器,移位和算术逻辑运算,写寄存器,PCPC,PC-4PC-2,PC-8PC-4,ARMThumb,PC,指向处于指令读取级的指令地址,而不是处于执行级的指令地址,ARM7,内核使用,3,级流水线,以提高指令流传递给处理器的速度,使得某些操作达到并行处理的效果,比单纯的串行处理要好。,44,优秀的流水线结构,本例中,6,个时钟周期内一共完成了,6,条指令,全部对寄存器进行操作 (单周期执行),指令周期数,(CPI)=1,Operation,Cycle,1 2 3 45 6,ADD,SUB,MOV,AND,ORR,EOR,CMP,RSB,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Decode,Execute,Fetch,Decode,Fetch,Fetch,45,流水线执行举例:,LDR,本例中,6,个时钟周期内一共完成了,4,条指令,指令周期数,(CPI)=1.5,Cycle,Operation,12 3 4 5 6,ADD,SUB,LDR,MOV,AND,ORR,Fetch,Decode,Execute,Fetch,Decode,Execute,Fetch,Decode,Execute,Data,Writeback,Fetch,Decode,Execute,Fetch,Decode,Fetch,46,ARM9TDMI,5,级流水线,性能改进,提升,CPI,至,1.5,提高时钟频率,47,ARM9TDMI,流水线,Instruction,Fetch,Shift+ALU,Memory,Access,Reg,Write,Reg,Read,Reg,Decode,FETCH,DECODE,EXECUTE,MEMORY,WRITE,ARM9TDMI,ARM or ThumbInst Decode,Reg Select,Reg,Read,Shift,ALU,Reg,Write,Thumb,ARMdecompress,ARM decode,Instruction,Fetch,FETCH,DECODE,EXECUTE,ARM7TDMI,48,Cycle,Operation,ADD R1,R1,R2,SUB R3,R4,R1,ORR,R8,R3,R4,AND R6,R3,R1,EOR R3,R1,R2,1,2,3,4,5,6,7,8,LDR,R4,R7,9,F,D,E,F,D,E,W,F,D,E,W,F,D,E,W,F,D,W,E,F,D,E,W,F-FetchD,-DecodeE-ExecuteI-InterlockM-Memory,W Write-back,I,LDR,内部周期,本例中,7,个时钟周期完成,6,条指令,,CPI,等于,1.2,Interlock:LDR,后面的指令马上要用到,LDR,的结果寄存器,导致插入一个内部周期,W,I,M,49,2.3.2,更多级的流水线,ARM10,采用了,6,级流水线,但是处于兼容考虑,直接读取,PC,值依然等于“当前指令地址,+8”,。,50,Xscale,流水线,Harvard,架构,提升了有效的存储器带宽,指令存储器接口,数据存储器接口,同时访问指令和数据存储器,7,级超级流水线,XScale,超级流水线由主流水线、存储器流水线和,MAC,流水线组成,性能改进,提升,CPI,至,1.1,提高时钟频率,51,Xscale,流水线,Main Execution Pipeline Handles data processing instructions,F1/F2 Instruction Fetch,ID Instruction Decode,RF Register File/Operand Shifter,X1 ALU Execute,X2 State Execute,XWB Write-back,Memory Pipeline Handles load/store instructions,D1/D2 Data Cache Access,DWB Data cache,writeback,MAC Pipeline Handles all multiply instructions,M1-M5 Multiplier stages,MWB(not shown)MAC write-back-may occur during M2-M5,52,2.3.3,指令预取和自修改代码,流水线使得,CPU,在执行当前指令的同时,从存储器中预取其后若干条指令。,预取的指令不一定得到执行。比如发生跳转或中断。,自修改代码指的是代码在执行过程中可能修改自身。被修改的指令可能和预取得指令不同,从而产生错误。,53,相邻指令执行的数据相关性会产生指令执行的停顿(,stall,),严重的会产生数据灾难(,hazards,)。如图所示,第,2,条指令的,reg,操作需要第,1,条指令执行的结果(,res,),因此,第,2,条指令在执行时,不得不产生停顿。,54,另外碰到分支类指令,那么,会使后面紧接该条指令的几条指令的执行都会无效,如图所示。,55,值得注意:,1,,执行分支指令或直接修改,pc,而发生跳转时,会使,ARM,内核清空流水线。,2,,,ARM 10,采用分支预测技术,通过预测可能的分支并在指令执行前装载新的分支地址指令,减少分支影响。,3,,即使产生中断,一条处于“执行”阶段的指令也将先完成,流水线的其他指令会被放弃,而从向量表的适当入口开始填充流水线。,56,2.4,模式和寄存器,57,2.4.1,模式分类,ARM,一共有,7,种执行模式,:,User,:,非特权级模式,多数应用程序使用的模式,FIQ,:,进入快速中断响应时,IRQ,:,进入一般中断响应时,Supervisor,:,复位后的缺省模式,或进入软件中断响应时,Abort,:,遇到存储器访问出错时,Undef,:,遇到未定义指令时,System,:,特权级的,User,模式,58,2.4.2 ARM,处理器的寄存器,ARM,一共有,37,个,32,位的寄存器,1,个,PC,寄存器,1,个,CPSR,(当前状态寄存器),5,个,SPSR,(状态保存寄存器),30,个通用寄存器,当前的处理器模式决定了可以访问到的寄存器组,.,以下是对所有,模式都有的寄存器,一组特定的,r0-r12,寄存器,一个特定的,r13,(,堆栈指针,sp,),和,r14,(,连接寄存器,lr,),PC,寄存器,r15,当前状态寄存器,cpsr,特权模式(,System,模式除外)独有的,特定的,spsr,(状态保留寄存器),59,2.4.2 ARM,处理器的寄存器,(,续,),User/System,Supervisor,Abort,Undefined,Interrupt,Fast Interrupt,R0,R0,R0,R0,R0,R0,R1,R1,R1,R1,R1,R1,R2,R2,R2,R2,R2,R2,R3,R3,R3,R3,R3,R3,R4,R4,R4,R4,R4,R4,R5,R5,R5,R5,R5,R5,R6,R6,R6,R6,R6,R6,R7,R7,R7,R7,R7,R7,R8,R8,R8,R8,R8,R8_FIQ,R9,R9,R9,R9,R9,R9_FIQ,R10,R10,R10,R10,R10,R10_FIQ,R11,R11,R11,R11,R11,R11_FIQ,R12,R12,R12,R12,R12,R12_FIQ,R13,R13_SVC,R13_ABORT,R13_UNDEF,R13_IRQ,R13_FIQ,R14,R14_SVC,R14_ABORT,R14_UNDEF,R14_IRQ,R14_FIQ,PC,PC,PC,PC,PC,PC,CPSR,CPSR,CPSR,CPSR,CPSR,CPSR,SPSR_SVC,SPSR_ABORT,SPSR_UNDEF,SPSR_IRQ,SPSR_FIQ,60,寄存器组织,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,FIQ,IRQ,SVC,Undef,Abort,User Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,FIQ,IRQ,SVC,Undef,Abort,r0,r1,r2,r3,r4,r5,r6,r7,r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,User,IRQ,SVC,Undef,Abort,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),FIQ Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,FIQ,IRQ,SVC,Undef,Abort,User Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,FIQ,IRQ,SVC,Undef,Abort,IRQ Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,User,FIQ,SVC,Undef,Abort,r13(sp),r14(,lr,),r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,FIQ,IRQ,SVC,Undef,Abort,User Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,FIQ,IRQ,SVC,Undef,Abort,SVC Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,User,FIQ,IRQ,Abort,r13(sp),r14(,lr,),r13(sp),r14(,lr,),spsr,Undef,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,FIQ,IRQ,SVC,Undef,Abort,User Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,FIQ,IRQ,SVC,Undef,Abort,Undef,Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,User,FIQ,IRQ,SVC,Abort,r13(sp),r14(,lr,),r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,FIQ,IRQ,SVC,Undef,Abort,User Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,FIQ,IRQ,SVC,Undef,Abort,Abort Mode,r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r15(pc),cpsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r13(sp),r14(,lr,),spsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,Current Visible Registers,Banked out Registers,User,FIQ,IRQ,SVC,Undef,r13(sp),r14(,lr,),61,Register Organization Summary,Usermoder0-r7,r15,and,cpsr,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),spsr,FIQ,r8,r9,r10,r11,r12,r13(sp),r14(,lr,),r15(pc),cpsr,r0,r1,r2,r3,r4,r5,r6,r7,User,r13(sp),r14(,lr,),spsr,IRQ,Usermoder0-r12,r15,and,cpsr,r13(sp),r14(,lr,),spsr,Undef,Usermoder0-r12,r15,and,cpsr,r13(sp),r14(,lr,),spsr,SVC,Usermoder0-r12,r15,and,cpsr,r13(sp),r14(,lr,),spsr,Abort,Usermoder0-r12,r15,and,cpsr,Thumb state,Low registers,Thumb state,High registers,Note:System mode uses the User mode register set,62,2.4.2 ARM,处理器的寄存器,(,续,),r0 r12,:通用寄存器。当,C,和汇编互相调用时,,r0 r3,用来传递函数参数,可记为,a0 a3,r13,:用于各工作态的堆栈寄存器(,sp,),r14,:用来保护程序返回地址的链接寄存器,(,lr,),r15,:程序计数器(,pc,),r8_FIQ r12_FIQ:,允许快速中断处理,r8_User r12_User,:除了,FIQ,外各模式公用,除了,User,和,System,模式外,各种模式都有自己独立的,r13,和,r14,63,2.4.3,状态寄存器,条件标识位,N=,结果为负,Z=,结果为零,C=,进位,V=,溢出,Q,标识位,只在,5TE/J,系列中有效,指示,sticky overflow,的发生,J,标识位,仅在,5TEJ,系列中有效,J=1:,处理器处于,Jazelle,状态,中断使能位,I =1:,禁止,IRQ.,F=1:,禁止,FIQ.,T,标识位,只在,xT,系列内核中有效,T=0:,处理器处于,ARM,状态,T=1:,处理器处于,Thumb,状态,模式位,指示当前处理器模式,27,31,N Z C V,Q,28,6,7,I F,T,mode,16,23,8,15,5,4,0,24,f,s,x,c,U n d e f i n e d,J,64,2.4.3 CPSR/SPSR(续),M4:0,模式,Accessible Registers,10000,User,PC,R14 to R0,CPSR,10001,FIQ,PC,R14_FIQ to R8_FIQ,R7 to R0,CPSR,SPSR_FIQ,10010,IRQ,PC,R14_IRQ,R13_IRQ,R12 to R0,CPSR,SPSR_IRQ,10011,SVC,PC,R14_SVC,R13_SVC,R12 to R0,CPSR,SPSR_SVC,10111,Abort,PC,R14_ABORT,R13_ABORT,R12 to R0,CPSR,SPSR_ABORT,11011,Undef,PC,R14_UNDEF,R13_UNDEF,R12 to R0,CPSR,SPSR_UNDEF,11111,System,PC,R14 to R0,CPSR(Arc
展开阅读全文