gpt4 book ai didi

从 bootloader 调用 32 位或 64 位程序

转载 作者:行者123 更新时间:2023-12-05 01:31:32 24 4
gpt4 key购买 nike

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

  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++ 编写)。

最佳答案

这是一个很大的话题。

您可能应该从学习输入和了解 protected mode 开始.

关于从 bootloader 调用 32 位或 64 位程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13115992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com