bootloader主要做四件事,1.开启A20地址线;2.探测内存,把内存相关信息告诉内核;3.初始化全局描述符表,开启分段机制,进入保护模式;4.把操作系统内核从磁盘加载到内存指定位置,跳转到内核,执行内核代码。
1.开启A20地址线,把内存寻址扩展到4GB。
enable2
0.
1:
inb
$0x64,
%al
testb
$0x2,
%al
jnz enable2
0.
1
movb
$0xd1,
%al
outb
%al,
$0x64
enable2
0.
2:
inb
$0x64,
%al
testb
$0x2,
%al
jnz enable2
0.
2
movb
$0xdf,
%al
2.探测内存,主要就是获取内存大小,和类型,比如是否可用,保留等,下面给出bios 0x15中断获取内存信息,命令字0xe820.
movl
$0,
0x6000
xorl