2

我并没有真正编写任何操作系统或引导加载程序,但我正在阅读有关 Oses 的内容,并且我对引导加载程序在没有 bios 系统调用的情况下工作的能力很感兴趣,如果我正确理解没有 UEFI 的系统中的大磁盘启动,更重要的是你可以访问所有磁盘并从所有分区启动或支持 GPT。

所以任何人都可以说我如何绕过int 13h并直接访问磁盘控制器(使用LBA并自己解决正确的分区)谁能告诉我谁将B8000地址映射到视频卡并且在保护模式下仍然有效? 保护模式还存在吗?这些天谁他妈的需要向后兼容?我如何绕过 int 16h (如果我真的想不知道,但如果你知道的话,WTH :-) 为什么不...)并直接使用键盘控制器?

4

1 回答 1

2

1) BIOS 现在支持 LBA 访问(AH=42h AH=43h Extended_Read_Sectors_From_Drive,Extended Write Sectors to Drive)。您可以像所有现代操作系统一样直接绕过 BIOS,直接对 IDE 控制器进行编程。您可以参考 Boch BIOS 源代码以获取示例http://bochs.sourceforge.net/cgi-bin/lxr/source/bios/rombios.c。它应该比 Linux 内核更简单、更不抽象。例如,写入扇区的代码在 6512 行左右。您对outb调用感兴趣。

2) B8000 可能是通过 VGA bios 中的模式设置代码映射的,但这是您不必关心的实现细节。它在保护模式下工作,因为它不是由处理器(使用虚拟内存)映射,而是由 IO 子系统映射。保护模式当然仍然存在。

3) 谁需要向后兼容?如果没用的话,早就被英特尔砍掉了,以节省芯片上的空间。

于 2012-08-25T16:20:30.680 回答