-1

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

Q. 编译器是 EXE 格式,所以需要 Windows 或 DOS。可以写在MBR上吗?

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

我正在尝试编写引导加载程序和某种相同类型的程序。

4

1 回答 1

1

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

因此,您的程序应该直接调用 BIOS 函数,例如使用asm关键字。

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

此外,您应该知道 MBR 是一个扇区长,它包含一个分区表。因此,您只有大约 450 个字节来存储二进制代码。

于 2011-08-28T23:30:28.317 回答