0

我正在开发一个将用 32 位 C++ 编写的操作系统内核。我需要弄清楚如何在 C++ 中启用 32 位保护模式/启用 a20 门。那么,你能告诉我这是否可能,如果可能,如何?谢谢你。

4

1 回答 1

5

C 和 C++ 不知道什么是“a20 门”以及如何启用它。与“32 位保护模式”相同。这需要通过特定的机器代码来完成。现在,正确的问题是如何从您的 C++ 程序中调用此代码。根据 C++ 编译器的不同,可能有几种不同的方法可以做到这一点:

1) 最简单的方法是使用asm,__asm__asm__块使用嵌入式汇编代码。仔细阅读您的 C++ 编译器文档,了解如何使用它。我不确定所有编译器都支持这一点。

2) 使用汇编程序使用汇编代码编写代码,以便可以从 C++ 应用程序中调用它。用于extern "C"在 C++ 程序中声明函数,以便您可以调用它。

3)更讨厌:将您的汇编代码放入一个字节数组中,将数组的地址转换为指向函数的指针并调用它。对机器代码和 C/C++ 调用约定有深入的了解,这是工作所必需的。

于 2014-12-09T19:27:45.937 回答