繁体   English   中英

从引导加载程序调用32位或64位程序

[英]Call 32-bit or 64-bit program from bootloader

在互联网上似乎有很多关于编写以下3个引导加载程序的相同信息:

  1. 无限循环jmp $
  2. 打印单个字符
  3. 打印“Hello World”。

这太棒了,我已经完成了这3个变化而没有遇到什么麻烦。

我想在C中编写一些32位或64位代码并对其进行编译,并从引导程序中调用该代码...基本上是一个引导加载程序,例如,设置计算机以运行一些简单的数值模拟。 例如,我将首先列出素数,然后可能是用户的一些输入/输出可能会计算傅里叶变换。 我不知道。

我还没有找到关于如何做到这一点的任何信息,但在我开始之前我已经可以预见到一些问题了。

首先,编译C程序会将其编译为几个不同文件中的一个,具体取决于目标 对于Windows,它是一个PE文件。 对于Linux,它是一个.out文件。 这些文件都完全不同。 在我的实例中,目标不是Windows或Linux,它只是我在引导加载程序中编写的内容。

其次,实际代码在哪里? 引导加载程序正好是512字节,但我用C编写的程序肯定会编译成更大的程序。 它需要坐在我的(虚拟)硬盘上,可能在某种文件系统中(我甚至没有定义过!)我需要将这个文件中的信息加载到内存中才能考虑执行它。 但根据我的理解,所有这些都比12行“Hello World”引导程序复杂许多,更复杂。

所以我的问题是:如何从我的16位引导加载程序中调用大型32位或64位程序(用C / C ++编写)。

这是一个很大的话题。

您应该首先学习进入并了解保护模式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM