我正在编写自己的操作系统.到目前为止,我的代码超过512字节,这太大了,无法容纳在简单的引导扇区中.
据我所知,我现在必须编写一个读取任意代码的引导加载程序,这些代码可能会也可能不会超过一个512字节的扇区.
引导程序需要:
这也是提出涉及操作系统开发的Stack Overflow问题的一个很好的起点.程序员经常很难创建一个Minimal,Complete和Verifiable示例.一个常见的样板/模板将允许其他Stack Overflow用户希望通过有限的大惊小怪来帮助测试代码.
我将如何构建这样一个可重用的引导程序?
我有一个程序集(NASM)文件:
bits 32
start:
mov dword [0xb8000], 0x2f4b2f4f
hlt
Run Code Online (Sandbox Code Playgroud)
这会生成一个二进制文件,其中包含:
C7 05 00 80 0B 00 4F 2F 4B 2F F4
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在 QEMU 中执行此二进制文件中的代码,而无需更改代码且无需添加标头(如 Multiboot 或类似的)?我希望保持二进制文件原样。
所以我想检查在实模式下是否支持保护模式和长模式。我知道我可以在处于保护模式时检查对长模式的支持,但这需要cpuid我认为我们在实模式下没有的指令(至少在旧处理器中)。
我没有找到任何相关信息。