在启动操作系统之前,将C / C ++编译器写入MBR以执行源代码

时间:2011-08-28 23:26:48

标签: c++ operating-system mbr

我正在尝试在C ++上编写完整的OS独立程序。我想在启动操作系统(即Windows)之前加载程序。我尝试用简单的“Hello World”程序替换MBR,但没有任何反应,我丢失了虚拟硬盘的分区表。 我想我应该将C ++编译器写入MBR以直接执行程序或源代码。

Q值。编译器采用EXE格式,因此需要Windows或DOS。它可以写在MBR上吗?

Q值。 C ++程序需要DOS平台。它可以在没有任何操作系统的情况下运行吗?

我正在尝试编写一个Boot loader和一些类似的程序。

1 个答案:

答案 0 :(得分:1)

用普通的C / C ++编写这样的程序是不可能的。没有操作系统,编译器应该在“独立”模式下工作。在这种模式下,没有“stdin.h”标题,没有文件,没有文件访问权限,也没有printf可用。

所以,你的程序应该直接调用BIOS函数,例如使用asm关键字。

MBR二进制文件的格式非常接近DOS的COM文件格式。可以将短COM程序转换为MBR引导代码(通过操作一些编译参数)。

此外,您应该知道MBR是一个扇区长并且它包含一个分区表。所以,你只有~450个字节来存储二进制代码。