我正在开发一个用32位C ++编写的OS内核。我需要弄清楚如何在C ++中启用32位保护模式/启用a20门。所以,你可以告诉我这是否可能,如果可能,怎么样?谢谢。
答案 0 :(得分:5)
C和C ++不知道" a20门"是以及如何启用它。同样适用于" 32位保护模式"。这需要通过特定的机器代码完成。现在,正确的问题是如何从C ++程序中调用此代码。根据C ++编译器,可能有几种不同的方法:
1)最简单的方法是使用asm
,__asm
或__asm__
块来使用嵌入式汇编代码。请仔细阅读C ++编译器文档,了解如何使用它。我不确定所有编译器都支持这一点。
2)使用汇编程序使用汇编代码编写代码,以便可以从C ++应用程序调用它。使用extern "C"
在C ++程序中声明该函数,以便可以调用它。
3)更讨厌:将汇编代码放入字节数组,将地址转换为指向函数的指针并调用它。熟悉机器代码和C / C ++调用约定,以便工作。