我不是真正编程任何操作系统或启动加载程序,但我正在阅读有关Oses的内容,我对引导加载程序在没有bios系统调用的情况下工作的能力很感兴趣,如果我正确理解系统中的大磁盘启动,那就更好了如果没有UEFI,您可以访问所有磁盘并从那里开始从所有分区启动或支持GPT。
所以任何人都可以说我如何绕过int 13h并直接访问磁盘控制器a(使用LBA并自己解析正确的分区) 任何人都可以告诉我谁将B8000地址映射到视频卡,这仍然可以在保护模式下工作吗?保护模式是否仍然存在?这些天到底谁需要向后兼容? 我如何绕过int 16h(dunno如果我真的想要,但如果你知道,WTH :-)为什么不...)并直接使用键盘控制器?
答案 0 :(得分:2)
1)BIOS现在支持LBA访问(AH = 42h AH = 43h Extended_Read_Sectors_From_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)谁需要向后兼容?如果它没用,那么它将被英特尔切断,以节省芯片上的空间。