【发布时间】:2013-10-21 05:15:30
【问题描述】:
BIOS 是用汇编语言编写的,机器只能理解二进制文件。 BIOS 是系统启动时加载到内存中的第一个程序。什么编译BIOS生成二进制文件?
【问题讨论】:
-
这个问题似乎离题了,因为它是关于 BIOS 而不是 Unix 或 Linux。
标签: bios compiler-construction
BIOS 是用汇编语言编写的,机器只能理解二进制文件。 BIOS 是系统启动时加载到内存中的第一个程序。什么编译BIOS生成二进制文件?
【问题讨论】:
标签: bios compiler-construction
BIOS 工程师使用 x86 汇编语言编写 BIOS,然后使用 MASM 或 NASM 之类的程序“编译”它。
然后将生成的二进制文件烧录到 Flash ROM 芯片中(使用a tool like this),然后安装到主板上。
当 PC 开机时,它开始执行此闪存芯片中的代码,初始化 PC 的硬件,然后将控制权交给操作系统。
上面的一些cmets:
【讨论】:
理论上,BIOS 可以用任何生成可执行二进制文件的语言编写,但必须处理低级硬件,最合适和最常用的是汇编和 C。
当 PC 开机时,没有什么可编译的,它已经是一个已组装/编译的二进制文件,已在 CPU 期望的内存(ROM、eprom、闪存)中准备就绪。
你也可以看看Bochs emulator's bios的来源(我认为Qemu和Virtualbox也有自己的,但不确定是否有来源)。
还有一些旨在替换 PC BIOS 的开源项目,例如 coreboot。
【讨论】:
编辑:这个答案不正确,正如 cmets 中所指出的那样。
我认为你误解了编译器。
当您编译程序时,您正在使用高级语言(如 C)并将其转换为汇编。汇编程序 = 二进制程序。它们是一回事。
所以,没有任何东西可以编译 BIOS。它只是运行。
【讨论】:
MOV 等等。什么将 BIOS 转换为二进制语言?
我认为主板制造商将其转换并写入ROM?
【讨论】: