X86 通过在OS/bootloader中传递bios

X86 通过在OS/bootloader中传递bios,x86,bootloader,bios,X86,Bootloader,Bios,我不是真的在编写任何操作系统或引导加载程序,但我在阅读有关操作系统的文章,我对引导加载程序在没有bios系统调用的情况下工作的能力很感兴趣,而且如果我正确理解在没有UEFI的系统中进行大磁盘引导,那么您可以访问所有磁盘并从所有分区引导或支持GPT 因此,任何人都可以说我如何绕过int 13h直接访问磁盘控制器a(使用LBA并自己解决正确的分区) 谁能告诉我是谁将B8000地址映射到视频卡上的,这是否仍在保护模式下工作?受保护模式是否仍然存在?现在谁需要向后兼容? 如何绕过int 16h(如果我真

我不是真的在编写任何操作系统或引导加载程序,但我在阅读有关操作系统的文章,我对引导加载程序在没有bios系统调用的情况下工作的能力很感兴趣,而且如果我正确理解在没有UEFI的系统中进行大磁盘引导,那么您可以访问所有磁盘并从所有分区引导或支持GPT

因此,任何人都可以说我如何绕过int 13h直接访问磁盘控制器a(使用LBA并自己解决正确的分区) 谁能告诉我是谁将B8000地址映射到视频卡上的,这是否仍在保护模式下工作?受保护模式是否仍然存在?现在谁需要向后兼容? 如何绕过int 16h(如果我真的想,我不知道,但如果你知道,为什么不…),直接使用键盘控制器?

1)BIOSes现在支持LBA访问(AH=42h AH=43h从驱动器扩展读取扇区,从驱动器扩展写入扇区)。您可以像所有现代操作系统一样直接绕过BIOS,直接对IDE控制器进行编程。您可以参考Boch BIOS源代码以获取示例。它应该比Linux内核更简单,抽象程度更低。例如,写入扇区的代码大约在第6512行。您对
outb
调用感兴趣

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

3) 谁需要向后兼容?如果它没用,英特尔会切断它以节省芯片空间。

感谢#1和#2,但我认为你对向后兼容性的看法不正确,因为486和386中仍有XT和286,这些天来,这一点毫无意义,我有一种预感,英特尔只是停留在他们的架构构建块,自从他们成为标准,AMD也是。。。。