现在的位置: 首页 > 综合 > 正文

ARM体系结构的基本概念

2013年08月03日 ⁄ 综合 ⁄ 共 2080字 ⁄ 字号 评论关闭

学习一个芯片的核心就在于抓住三点:

1 体系结构

2 寄存器结构

3 指令集

掌握了这几点就熟悉了一个芯片。

下面是对ARM体系结构知识的一些总结,避免时间长了忘记。
1ARMAdvanced RISC Machine
2ARM体系结构中支持两种指令集:ARM指令集和Thumb指令集。
3ARM内核有TDMI四个功能模块:
4ARM处理器有7种运行模式:
A
、用户模式(User):正常程序执行模式,用于应用程序。
D
、快速中断模式(FIQ):快速中断处理,用于高速数据传输和通道处理。
C
、外部中断模式(IRQ):用于通用的中断处理。
D
、管理模式(SVE):供操作系统使用的一种保护模式。
E
、数据访问中止模式(Abort):用于虚拟存储及存储保护。
F
、未定义指令中止模式(Undefined):当未定义指令执行时进入该模式。
G
、系统模式(System):用于运行特权级的操作系统任务。
除了用户模式之外的其他6种处理器模式称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式切换,其中,除了系统模式外,其他的5种特权模式又称为异常模式
5ARM处理器共有37个寄存器:31个通用寄存器和6个状态寄存器
A
、通用寄存器包括R0~R15,可以分为3类:
a
、未备份寄存器R0~R7:在所有的处理器模式下,未备份寄存器都是指向同一个物理寄存器。
b
、备份寄存器R8~R14
对于R8~R12来说,每个寄存器对于2个不同的物理寄存器,它们每次所访问的物理寄存器都与当前的处理器运行模式有关。
对于R13R14来说,每个寄存器对于6个不同的物理寄存器,其中一个是用户模式和系统模式共用。
R13
ARM指令种常用作堆栈指针。R14又称为连接寄存器(LR),在ARM体系种具有下面两种特殊作用:在通过BLBLX指令调用子程序时,存放当前子程序的返回地址;在异常中断发生时,存放异常模式将要返回的地址。
c
、程序计数器R15PC)。
由于ARM采用了流水线机制,在三级流水线中,当正确读取了PC的值时,该值为当前指令地址值加8个字节。
B
、程序状态寄存器
a
ARM体系结构包含1个当前程序状态寄存器(CPSR)和5个备份的程序状态寄存器(SPSR),使用MSRMRS指令来设置和读取这些寄存器。
b
、当前程序状态寄存器CPSR:保存当前处理器状态的信息,可以在任何处理器模式下被访问。
c
、备份程序状态寄存器SPSR:当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容,在异常中断程序退出时,可以用SPSR中保存的值来恢复CPSR
6ARM指令的寻址方式
A立即寻址:操作数本身就在指令中给出,只要取出指令也就取到了操作数。
ADD
R0, R0, #1
;R0
?R0+1
B
寄存器寻址:利用寄存器中的数值作为操作数。
ADD
R0, R1, R2
;R0
?R1+R2
C
寄存器间接寻址:以寄存器中的值作为操作数地址,而操作数本身存放在存储器中。
ADD
R0, R1, [R2]
;R0
?R1+[R2]
LDR
R0, [R1]
;R0
?[R1]
STR
R0, [R1]
;[R1]
?R0
D
基址变址寻址:将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。
LDR
R0, [R1, #4]
;R0
?[R1+4]
LDR
R0, [R1, #4]!
;R0
?[R1+4]
R1
?R1+4
LDR
R0, [R1], #4
;R0
?[R1]
R1
?R1+4
LDR
R0, [R1, R2]!
;R0
?[R1+R2]
E
多寄存器寻址:一条指令可以完成多个寄存器值的传送。
LDMIA
R0, {R1, R2, R3}
;R1
?[R0]
R2
?[R0+4]
R3
?[R0+8]
F
相对寻址:以程序计数器PC的当前值作为基地址,指令中的地址标号作为偏移量,两者相加之后得到操作数的有效地址。
BL
NEXT
;
跳转到子程序NEXT处执行
……
NEXT
……
MOV
PC, LR
;
从子程序返回
G
堆栈寻址:支持4种类型的堆栈工作方式:
满递增堆栈  满递减堆栈  空递增堆栈  空递减堆栈
7ARM的存储方法
A
、大端模式:数据的高字节存储在低地址中,低字节存储在高地址中。
B
、小端模式:数据的低字节存储在低地址中,高字节存储在高地址中。
8ARM中断与异常
A
ARM内核支持7种中断,不同的中断处于不同的处理模式,具有不同的优先级,而且每个中断都有固定的中断地址入口。当一个中断发生是,相应的R14LR)存储中断返回地址,SPSR存储当前程序状态寄存器CPSR的值。
B
、由于ARM内核支持流水线工作,LR寄存器存储的地址可能是发生中断后面指令的地址,所以不同的中断处理完成后,必须将LR寄存器值经过处理后再写入P15PC)寄存器。
C
ARM异常的具体含义:
a
、复位:程序跳转到异常复位异常处理程序处执行。
b
、未定义的指令
c
、软件中断
d
、指令预取中止
e
、数据访问中止
f
、外部中断请求
g
、快速中断请求
D
ARM处理器对异常中断的响应过程
a
、将下一条指令的地址存入相应的连接寄存器LR中。
b
、将CPSR复制到相应的

抱歉!评论已关闭.