将已有的知识和方法重新消化,为大家建立好 “台阶”,在有限的时间里迅速 赶上数十年来建立起的学科体系**。**
<aside> 📖 Bare-metal 与程序员的约定
为了让计算机能运行任何我们的程序,一定存在软件/硬件的约定
<aside> 📖 x86 Family: CPU Reset
寄存器会有初始状态
0x0000fff0
0x60000010
0x00000002
在执行 CPU Reset 后:
CS:IP
) 处取指、译码、执行0x0000fff0
一般是向 Firmware 的 jmp
指令Firmware ⇒ 都是主板 / 主板上外插设备的软件抽象
<aside> 📖 约定
Firmware 必须提供机制,将用户数据载入内存
Legacy BIOS 把第一个可引导设备的第一个扇区 (512Bytes的Master Boot Record, MBR) 加载到物理内存的 7c00
位置
CS:IP = 0x7c00, (R[CS] << 4) | R[IP] == 0x7c00
CS = 0x07c0, IP = 0
CS = 0, IP = 0x7c00
<aside> 📖 UEFI上的操作系统加载
标准化的加载流程
更好的程序支持
make -nB \\
| grep -ve '^\\(\\#\\|echo\\|mkdir\\|make\\)' \\
| sed "s#$AM_HOME#\\$AM_HOME#g" \\
| sed "s#$PWD#.#g" \\
| vim -
%s/ /\\r /g