如何编译BIOS

时间:2013-10-21 05:15:31

标签: bios compiler-construction

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

4 个答案:

答案 0 :(得分:6)

Writing my own BIOS

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

当PC打开时,没有什么可编译的,它已经是内存中的汇编/编译二进制文件(ROM,eprom,flash),CPU需要它。

您可以查看Bochs emulator's bios来源(我认为Qemu和Virtualbox也有自己的但不确定来源是否可用)。

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

答案 1 :(得分:6)

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

然后将生成的二进制文件刻录到Flash ROM芯片中(使用a tool like this),然后将其安装在主板上。

当PC打开时,它开始执行该闪存芯片的代码,该代码初始化PC的硬件,然后将控制权转移到操作系统。

对上述内容的一些评论:

  • 较新的UEFI BIOS是用C语言编写的,但初始引导加载程序除外,它仍然是程序集。
  • 编程工具通常仅用于初始编程空白闪存芯片(装配线上的全新主板)。系统启动后,通常使用软件实用程序重新刷新BIOS芯片。
  • 您并不总是需要使用带插槽的Flash编程工具。在较新的主板上,芯片可以直接表面安装,而不是插座。在这种情况下,主板上可能有一个编程连接器,用tool like this编程闪存。

答案 2 :(得分:1)

编辑:此答案不正确,如评论中所述。

我认为你误解了编译器。

编译程序时,您将使用高级语言(如C)并将其转换为程序集。汇编程序=二进制程序。他们是同一个。

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

答案 3 :(得分:-1)

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