Bare-metal 与厂商的约定
厂商为操作系统开发者提供 Firmware

CPU Reset (Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A/3B)
EIP = 0x0000fff0CR0 = 0x60000010EFLAGS = 0x00000002Reset 后处理器都从固定地址 (Reset Vector) 启动
Firmware 负责加载操作系统
-kernel 可以绕过 Firmware 直接加载内核 (RTFM)状态机 (初始状态) 开始执行

Firmware: BIOS vs. UEFI
今天的 Firmware 面临麻烦得多的硬件:

BIOS 提供机制,将
7c00 位置CS:IP = 0x7c00, (R[CS] << 4) | R[IP] == 0x7c00CS = 0x07c0, IP = 0CS = 0, IP = 0x7c00虽然最多只有 446 字节代码 (64B 分区表 + 2B 标识)
Talk is cheap. Show me the code. ——Linus Torvalds
有没有可能我们真的去看从 CPU Reset 以后每一条指令的执行?
标准化的加载流程
.efi更好的程序支持
Firmware 通常是只读的 (当然……)
CIH 病毒的作者陈盈豪被逮捕,但并未被定罪
