任何一个操作系统的启动都至少关注两个方面:1,程序运行栈的初始化。2,处理器外设的初始化。
在ARMv6以及以前的体系结构中,定义了七种模式分别为:管理模式(SVC),快速中断模式(FIQ),未定义模式(UND),终止模式(ABT),用户模式(USR)以及系统模式(SYS)。在这五种模式中,除了USR和SYS其他的都是异常模式。而,每一种异常模式都有属于自己的堆栈指针寄存器R13、返回地址寄存器R14以及模式备份寄存器SPSR。
那么怎么样进入异常模式呢?有两种方式可以进入异常模式,第一种就是当某种异常发生的时候,这是一种被动的模式切换方式。第二种就是,程序员主动的进行模式切换,这种方法是通过更改CPSR寄存器中的模式为来实现的。
再谈谈ARM体系结构中的堆栈结构和指针指向。在ARM体系结构中堆栈采用一种叫做满递减的方式来分布堆栈,满递减方式就是堆栈由高地址向低地址方向生长的,并且堆栈指针总是指向栈顶地址。