ucore os 前初始化

BIOS 初始化完成说起##

连接的时候指定了 -Ttext 0x7c00 也指定了 -e start
所以booasm.S 中的start 就呗钦定为程序入口了。

开始就是 屏蔽中断 初始化段寄存器 使能A20
加载段描述符表

使用 ljmp 使用 选择子是0x8 跳转到protcseg (应该也加载到cs 寄存器中了)
初始化段寄存器寄存器

将0x10(kernel data segment seletor) 显示的(movw ) 加载到所有的寄存器中去

初始化 %ebp=0(无意义的值)
%esp=start (? start 的地址是0x7c00) 也就是栈的地址是 0--0x7c00

调用 bootmain

bootmain 读取elf 格式的 kernel,然后调用kernel的 entry 前初始化完成

原文地址:https://www.cnblogs.com/sfzyk/p/8982351.html