编写C/ c++编译器到MBR,在启动操作系统之前执行源代码
Writing C/C++ Compiler to the MBR to execute source code before Booting up the OS
我正在尝试在c++上编写完全独立于操作系统的程序。我想在启动操作系统(即Windows)之前加载程序。我试图用我简单的"Hello World"程序取代MBR,但没有发生任何事情,我丢失了虚拟硬盘的分区表。我想我应该把c++编译器写在MBR上,直接执行程序或源代码。
。编译器是EXE格式,所以应该需要Windows或DOS。它可以写在MBR上吗?
。c++程序需要DOS平台。它可以在没有操作系统的情况下运行吗?
我正在尝试编写一个引导加载程序和一些相同类型的程序。
用普通的C/c++编写这样的程序是不可能的。没有操作系统,编译器应该在"独立"模式下工作。在这种模式下,没有"stdin.h"头文件,没有文件,没有文件访问,也没有printf。
所以,你的程序应该直接调用BIOS函数,例如使用asm
关键字。
MBR二进制格式非常接近DOS的COM
文件格式。可以将短COM程序转换为MBR启动代码(通过操纵一些编译参数)。
另外,您应该知道MBR是一个扇区长,它包含一个分区表。因此,您只有~450字节来存储二进制代码。
相关文章:
- 如何创建一个空的全局类并在启动时实例化它
- 即使我读取了所有内容,在FIFO上打开的QSocketNotifier也会一直启动
- 使用 std::string () const 函数启动线程或未来
- 在C++中设置基于操作系统的文件路径
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- 如何创建线程序列以按照启动顺序执行任务?
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 在挂钩启动新线程时解除挂钩进程
- 程序无法启动,因为缺少 libmpc-3.dll
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- QSerialPort 在应用程序启动之前正在使用中
- 无法在 Arch Linux 中启动虚幻引擎 4
- C++关于指针和使用函数将它们启动到堆的行为究竟是什么?
- 如何使用 ctypes 停止和重新启动从 Python 运行的C++代码
- 可视化 我可以在哪里为多个操作系统中的应用程序启动 c++
- C++:如何识别您的程序是从Visual Studio启动的,而不是从操作系统启动的
- 编写C/ c++编译器到MBR,在启动操作系统之前执行源代码
- 在Windows C++或C#中,您可以询问操作系统当前是否正在关闭/重新启动/注销
- 如何在 C、C++ 的 Linux 操作系统上启动进程