前言
研究的起点是CPU收到ResetVector信号后,开始执行第一行代码,从此刻开始一直到计算机关机/重启/崩溃,被划分为七个不同的阶段。
SEC:
是计算机平台初始化的第一阶段,意思是安全阶段,由于是最早开始运行的固件代码,所以相当部分是汇编语言开发的。它主要负责4件事:处理平台所有的重启事件,创建一个临时内存区,作为整个系统安全执行的根,并为下一个阶段PEI传递交接信息。无论是你在操作系统点击了重启,还是直接摁了电脑的重启电源键,计算机本质上是给CPU发送了一个ResetVector信号,也就是重置。那么CPU就会从SEC阶段把固件代码再跑一边,这跟关机再开机不同。在SEC阶段还只是初始化CPU,并没有初始化内存,但是又有需求,主要是除了最初的一些汇编代码,SEC阶段还有C代码,就需要堆栈,这就要求必须有内存,在物理内存没初始化的情况下会临时使用缓存。缓存是内建在CPU中的,所以是初始化好的,可以暂时为C代码服务。SEC作为整个系统执行的起点,可能遇到各种异常,就需要设置IDT。有了中断描述表接收异常,就能让系统遭遇意外情况时不至于崩溃,它还要为PEI阶段的代码设置临时内存的基地址和长度,并传给