4

BIOS 是用汇编语言编写的,机器只能理解二进制文件。BIOS 是系统启动时加载到内存中的第一个程序。什么编译 BIOS 以生成二进制文件?

4

4 回答 4

6

编写我自己的 BIOS

理论上,BIOS 可以用任何生成可执行二进制文件的语言编写,但必须处理低级硬件,最合适和最常用的是汇编和 C。

当 PC 打开时,没有什么要编译的,它已经是一个组装/编译的二进制文件,在 CPU 期望的内存(ROM、eprom、flash)中准备就绪。

您也可以查看Bochs 模拟器的 bios源(我认为 Qemu 和 Virtualbox 也有自己的,但不确定是否有可用的源)。

还有一些旨在替换 PC BIOS 的开源项目,例如coreboot

于 2013-10-21T08:33:54.913 回答
6

BIOS 工程师用 x86 汇编语言编写 BIOS,然后使用MASMNASM等程序“编译”它。

然后将生成的二进制文件烧录到 Flash ROM 芯片中(使用类似的工具),然后将其安装在主板上。

当 PC 启动时,它开始执行来自该闪存芯片的代码,该芯片初始化 PC 的硬件,然后将控制权移交给操作系统。

对上面的一些评论:

  • 较新的 UEFI BIOS 是用 C 编写的,但初始引导加载程序除外,它仍然是程序集。
  • 编程工具通常只用于空白闪存芯片(流水线上的全新主板)的初始编程。启动系统后,通常使用软件实用程序重新刷新 BIOS 芯片。
  • 您不必总是使用插槽式闪存编程工具。在较新的主板上,芯片可能直接表面贴装,而不是插座。在这种情况下,主板上可能有一个编程连接器,可以使用这样的工具对闪存进行编程。
于 2013-12-18T17:55:18.767 回答
0

编辑:正如评论中所指出的,这个答案是不正确的。

我认为您误解了编译器。

当你编译一个程序时,你正在使用一种高级语言(如 C)并将其转换为汇编。汇编程序 = 二进制程序。他们是一样的。

因此,没有任何东西可以编译 BIOS。它只是运行。

于 2013-10-21T05:54:54.493 回答
-1

我认为主板制造商将其转换并写入ROM?

于 2013-10-21T07:44:40.083 回答