小编God*_*amn的帖子

BIOS 如何初始化 DRAM?

一段时间以来,我一直在四处寻找有关 BIOS 究竟是如何工作的解释。我设计了一个引导加载程序,并在成功初始化 IDT 和 GDT 的同时用它跳到了 32 位模式,但这样做时,我发现“操作系统”似乎很简单,感觉就像“ BIOS”是每台计算机的实际操作系统。

所以现在我接受了一个新的挑战,试图发现 BIOS 如何实际初始化自身,发现有多少 RAM 可用,以及如何/从何处将附加卡 ROM 导入到 RAM 中。据我了解,处理器不是通过跳转,而是自动开始在 RAM 内的 16 位段:偏移地址 0xFFFF:0x0000 处执行代码。这意味着从技术上讲,由于处理器的起始位置,所有计算机最初必须至少有 1MB 的 RAM 才能启动,并且由于这些知识,我一直假设所有 BIOS 都会在启动之前自动将自己写入 RAM处理器获取其 RST 信号。我觉得这不是真的,因为这正是我相信可以通过 BIOS 禁用的“Shadow BIOS”。然而,我一直在到处寻找“BIOS 设计师指南”,

BIOS 如何真正知道有多少 RAM?它是否只是在最高内存区域进行位写入位读取测试并从那里下降?以及如何将附加卡 ROM 加载到 RAM 中?据我了解,BIOS 构建了一个非常基本的中断和/或“入口点”列表,附加卡 ROM 可以利用这些中断和/或“入口点”,并使它们能够“锁定”其他 BIOS 的中断,例如“$PMM”?BIOS 制造商如何知道他们的 BIOS 中需要哪些确切的锚字符串才能启动像 Windows 这样的操作系统?? BIOS 制造商如何知道他们的 BIOS 中需要哪些确切的锚字符串才能启动像 Windows 这样的操作系统?? BIOS 制造商如何知道他们的 BIOS 中需要哪些确切的锚字符串才能启动像 Windows 这样的操作系统?

任何答案都会非常有帮助,以及任何推荐的规范和/或任何能够引导我了解我一直在寻求的知识的指南。例如,可能有一个指南说“在移交给 IPL 之前,BIOS 需要完成的最低要求的过程?” 或者甚至是一个 C 或汇编源代码示例,其中包含一些可以向我展示附加卡的 ROM 映像实际是什么或看起来像什么的内容,这将非常有帮助。

x86 assembly post bios

7
推荐指数
2
解决办法
1825
查看次数

标签 统计

assembly ×1

bios ×1

post ×1

x86 ×1