1 首先测试 了, 之前的代码 是 没有问题的,确实会 停在 汇编处。
1 首先是 设置 除了 CS 之外的寄存器 进入 32为模式
//为了使除了 cs 之外的 段选择寄存器也进入 32位模式。
mov $16, %ax // 16为数据段选择子
mov %ax, %ds
mov %ax, %ss
mov %ax, %es
mov %ax, %fs
mov %ax, %gs
2 然后是 从 汇编 再 跳转到 C语言
//32位 C 语言执行的第一个函数
void load_kernel(void) {
for (;;) {}
}
然后是使用
//跳转到C 函数,注意这里的8 的作用
jmp $8, $load_kernel