gpt4 book ai didi

c - 如何让程序通过BIOS运行?

转载 作者:太空宇宙 更新时间:2023-11-04 06:50:36 25 4
gpt4 key购买 nike

我搜索了有关此的信息,但没有找到任何信息。

思路是:

如果我用 C 或任何其他语言编写程序,我还需要做什么才能在 BIOS 中识别它并将其作为 DOS 程序或提示程序启动?

我在使用 ISO 和 Rufus 启动带有 Windows 的闪存驱动器后得到了这个想法,它在闪存驱动器中放入了一些代码以便 BIOS 识别它并运行,所以我想用一个程序做同样的事情例如我的。

提前致谢!

最佳答案

一个有趣但颇具挑战性的练习!

BIOS 将从引导设备中获取特定区域,称为主引导记录。在一个操作系统和一个或多个分区的“正常”情况下,MBR 需要弄清楚在哪里可以找到操作系统,将其加载到内存中,并将控制权交给它。届时常规启动顺序开始,稍后操作系统将运行并能够与您交互。可以找到有关初始事件的更多详细信息 here

现在,出于教育目的,这并不是绝对必要的。您可以编写一个只读取磁盘固定部分的 MBR(BIOS 具有允许您从磁盘读取原始扇区的功能,磁盘可以被认为只是一堆扇区,每个扇区包含 512 字节的信息)并启动该代码。您可以找到一个开源 MBR here并且基本上在任何开源操作系统中。

那是“简单”的部分,因为现在您可能想做一些有趣的事情。除非你想自己与硬件的每个部分进行交互,否则你将不得不依赖 BIOS 提供的服务来与键盘、屏幕和磁盘进行交互。传统上关于 BIOS 服务的最佳来源是 Ralf Brown 的 interrupt list .

一个具体的考虑因素:您的 C 编译器带有一个标准库,该库的许多操作都需要特定的操作系统(例如,要向屏幕执行输出,它会要求操作系统执行该输出,并且操作系统通常会使用 BIOS 或对硬件的一些直接访问来执行该任务)。因此,按照上面解释的路线,您还需要找到一种方法,用一些使用 BIOS 的服务替换这些服务,仅此而已 - 即,或多或少地重写标准库。

简而言之,要获得可用的东西,您将编写操作系统的基本部分...

关于c - 如何让程序通过BIOS运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52021483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com