一、ARM存储器
1. 数据类型:字节、半字、字
2. 地址空间:最大可寻址空间位4GB(2的32次方字节)
3. 巨细端格局:
大端格局是字数据的高字节存储在低地址中,低字节存在高地址中
小端格局是低地址中寸的是子数据的低字节,高地址寄存的是子数据的高字节
二、处理器形式
ARM处理器共有7种作业形式,除用户(user)形式之外的其他6种处理形式统称为特权形式(Privileged Modes)。在这些形式下,程序能够拜访一切的系统资源,也能够恣意切换处理器形式。特权形式中除系统(system)形式之外的其他5种形式又统称为反常形式。
处理器形式能够经过软件操控进行切换,也能够经过外部间断或内部反常处理进程进行切换。运转在用户形式下的程序不能拜访一些受操作系统维护的系统资源,也不能直接进行处理器形式切换,假如要想进行形式切换,能够发生反常处理,在反常处理进程中进行处理器形式的切换,这种系统架构能够使操作系统操控整个系统资源。
每一种反常形式中都有一组寄存器供反常处理程序运用,这样能够确保在进入反常形式时,用户形式下的寄存器不被损坏。
系统形式不是经过反常进程进入的,它和用户形式具有完全相同的寄存器。系统形式归于特权形式,能够拜访一切系统资源,也能够直接进行处理器形式切换,首要供操作系统内核进程运用;一般操作系统内核进程需求拜访一切的系统资源,一起该进程依然运用用户形式下的寄存器组,而不是反常形式下的寄存器组,这样能够确保当反常发生时内核进程状况不被损坏。
ARM处理器的7种作业形式如下表所示:
处理器作业形式
阐明
用户(user,usr)形式
正常程序运转形式
快速间断(FIQ,fiq)形式
反常
形式
特权形式
privileged modes
快速间断处理
外部间断(IRQ,irq)形式
一般间断处理
超级用户(supervisor,svc)形式
供给操作系统运用的一种维护形式,swi指令状况
数据拜访间断(abort,abt)形式
用于虚拟存储和存储维护
未界说指令间断(undefined,und)形式
用于支撑经过软件仿真硬件的协处理
系统(system,sys)形式
用于运转特权级的操作系统使命
对应于以上7种形式,ARM处理器有7组通用寄存器,如下表所示:
usr形式
sys形式
svc形式
abt形式
und形式
irq形式
fiq形式
R0
R0
R0
R0
R0
R0
R0
R1
R1
R1
R1
R1
R1
R1
R2
R2
R2
R2
R2
R2
R2
R3
R3
R3
R3
R3
R3
R3
R4
R4
R4
R4
R4
R4
R4
R5
R5
R5
R5
R5
R5
R5
R6
R6
R6
R6
R6
R6
R6
R7
R7
R7
R7
R7
R7
R7
R8
R8
R8
R8
R8
R8
R8_fiq
R9
R9
R9
R9
R9
R9
R9_fiq
R10
R10
R10
R10
R10
R10
R10_fiq
R11
R11
R11
R11
R11
R11
R11_fiq
R12
R12
R12
R12
R12
R12
R12_fiq
R13
R13
R13_svc
R13_abt
R13_und
R13_irq
R13_fiq
R14
R14
R14_svc
R14_abt
R14_und
R14_irq
R14_fiq
PC
PC
PC
PC
PC
PC
PC
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
CPSR
SPSR_svc
SPSR_abt
SPSR_und
SPSR_irq
SPSR_fiq
阐明:
-
ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包含31个通用寄存器和6个状况寄存器,其间通用寄存器包含程序计数器(PC指针)及一切寄存器(均为32位)。
-
ARM处理器中有用户形式、系统形式、特权形式、数据拜访间断形式、未界说指令间断形式、IRQ间断形式、FIQ间断形式7种作业形式,每种作业形式都有R0~R15及CPSR共17个通用寄存器,而在5种反常间断(exception)形式中又各自具有一个独立的SPSR寄存器用于寄存当时状况寄存器的值。这些通用寄存器关于各种作业形式或部分作业形式有些是共用的,如表7-2所示。
-
R8~R12关于快速间断FIQ形式之外的其他形式都是共用的,而FIQ形式别的有一套自己寄存器R8_fiq~R12_fiq,这样是为了在处理FIQ间断时不用维护R8~R12寄存器,然后进步响应速度。
-
R13和R14除了用户形式和系统形式共用外,其他每种反常形式都有一套自己独立的寄存器:R13_svc、R14_svc/R13_abt、R14_abt/R13_und、R14_und/R13_irq、R14_irq/R13_fiq、R14_fiq,即R13和R14有6套物理寄存器完结。
-
R13/sp寄存器在ARM中除了可用作通用寄存器外还用作仓库指针sp,并且每一种反常(exception)形式都有自己独立的R13物理寄存器完结。在子程序中R13只能用作sp,sp在进入子程序的值和退出子程序的值有必要持平。
-
R14/lr寄存器在ARM中除了能够用作通用寄存器外,还可用作衔接寄存器lr,用来保存子程序的回来地址,假如子程序保存了回来地址,R14也能够用作其他用处。每一种反常(exception)形式都有自己独立的R14/lr物理寄存器完结。
-
R15寄存器在ARM顶用作程序计数器pc,尽管R15也能够用作通用寄存器,但要留意有一些特别约束,假如违反了这些约束,指令履行的成果将是不行意料的。
-
子程序经过寄存器R0~R3来传递参数,这时,R0~R3能够记作A1~A4。假如参数超越4个,能够将剩下的参数送到数据栈中,入栈的次序与参数的次序相反,即最终一个参数先入栈。
-
在子程序顶用R4~R11来保存局部变量,这时,R4~R11能够记作V1~V8;而在Thumb程序中,一般只能运用寄存器R4~R7。
-
寄存器R12用作子程序间的scratch寄存器,记作ip,在子程序间的衔接代码中常有这种运用规矩
三、反常
当正常的程序履行流程发生暂时的间断时,称之为反常,例如处理一个外部的间断请求。在处理反常之前,当时处理器的状况有必要保存,这样当反常处理完结之后,当时程序能够持续履行。处理器答应多个反常一起发生,它们将会按固定的优先级进行处理。
当一个反常呈现今后,ARM微处理器会履行以下几步操作
1.将下一条指令的地址存入相应衔接寄存器LR,以便程序在处理反常回来时能从正确的方位重新开始履行。
2.将CPSR复制到相应的SPSR中。
3.依据反常类型,强制设置CPSR的运转形式位。
4.强制PC从相关的反常向量地址取下一条指令履行,然后跳转到相应的反常处理程序处。
ARM系统结构所支撑的反常类型
1.复位:复位电平有用时,发生复位反常,程序跳转到复位处理程序处履行
2.未界说指令:遇到不能处理的指令,界说未界说指令反常
3.软件间断:履行SWI指令发生,用于用户形式下的程序调用特权指令
4.指令预取间断:处理器预取指令的地址不存在,或该地址不答应当时指令拜访
5.数据间断:处理器数据拜访指令的地址不存在,或该地址不答应当时指令拜访
6.IRQ:外部间断请求有用,且CPSR中的I位为0时,发生IRQ反常
7.FIQ:快速间断请求引脚有用,且CPSR的F位为0时,发生FIQ反常
ARM系统间断向量表
优先级
地址
反常原因
进入形式
1
0x0000,0000
复位
管理形式
6
0x0000,0004
未界说指令
未界说形式
6
0x0000,0008
软件间断
管理形式
5
0x0000,000C
间断(预取指令过错)
间断形式
2
0x0000,0010
间断(预取数据过错)
间断形式
0x0000,0014
保存
保存
4
0x0000,0018
IRQ(外部间断,且I答应)
IRQ
3
0x0000,001C
FIQ(外部间断,且F答应)
FIQ