arm体系结构
arm体系结构主要有五个部分:
1、arm的工作状态,工作模式,寄存器组
2、流水线
3、存储结构
4、指令系统(指令集)
5、异常处理结构
----------------------------------------------------------------------
1、arm的工作状态,工作模式,寄存器组
包含:ARM状态:执行32位字对齐的arm指令,
Thumb状态:执行16位半字节对齐的指令,
注意:两种状态可以相互切换
启动后开始执行开始执行代码时,工作状态处于arm态。
-------------------------------------------------------------
工作模式:(共有7中)
管理模式(suv)保护模式:(系统调用,arm复位启动后,还有就是u-boot引导内核启动时,arm板所处的状态)
用户模式(usr):执行普通应用程序时;
系统模式(sys):超级用户执行指令时
中止模式(abt):运行出错时进入
未定义模式(udn):未定义指令运行出错时进入
快速中断模式:
外部中断模式:
注意:工作模式的切换可通过:软件实现,也可以通过中断来实现。
-----------------------------------------------------------------------------
寄存器组:
总共有37个寄存器,31个通用寄存器,6个状态寄存器。
通用寄存器包括:R0-R15
分为:未分组寄存器:r0-r7
分组寄存器:r8-r14
程序计数器:r15(program count)pc;
各个寄存器的作用:
R0-R12:用于存放局部变量,其中R0-R3还可以用于存放参数(参数传递),在c与汇编混合编程时可用到,如果超过四个参数,其他参数放到栈中。
R13(sp Stack point):用于存放栈的地址,
R14(lr link register ):用于存放子程序的返回地址,也称子程序链接返回地址。
R15(程序计数器pc):用于存放当前工作模式下取指的指令的地址,指向当前执行的那条指令的地址,保存了下一条指令的地址。
CPSR(current program statue register):1、用来保存当前程序状态的寄存器,2、所有处理器模式下都可以访问当前程序状态寄存器(意味可以读写CPSR寄存器来修改处理器模式)。
SPSR(saved program statue register):异常发生时用于保存CPSR的值,从异常返回时,将CPSR_mode复制到CPSR中,恢复原来处理器的模式。(用于切换模式时保存CPSR的值)。
arm状态寄存器的格式:
通过修改前5位可切换处理器模式(即工作模式位)。
工作模式位:
条件码标记位:(通常只读取,不修改)
控制位:(会修改)
--------------------------------------------------------------------------------------------
2、arm流水线结构(使cpu从串行工作变为并行工作)
冯诺依曼结构:只使用一条总线来进行取指令和数据;
哈弗结构:含有两天总线,一条总线用于取指令,另一条指令用于取数据。
流水线的过程:把一个重复的过程分解成诺干个子过程,每个子过程可以与其他子过程同时进行。
即此时pc是指向指令SUB的。
一般讲一个指令的处理过程分成三个步骤
1. 取指.-à读取指令(机器码)
2. 译码 --》
3. 执行à执行指令.
-------------------------------------------------------------------------------------------
3、arm存储结构:
3.存储结构
--ARM数据类型
1.8位 (字节)
2.16位 (半字)
3.32位 (字)
--ARM存储器特点:
字节:字节数据可以随意存放
半字: 半字对齐(地址最低为0);
字: 地址最低为00;
--ARM格式:
大端模式
小端模式
--ARM存储器层次.
Arm处理器,希望存储器容量大,速度快.容量大,速度慢。速度快,容量小.
--------------------------------------------------------------------------------------
arm指令系统: