标签:
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位可切换处理器模式。
标签:
原文地址:http://www.cnblogs.com/defen/p/5367643.html