0

私は、32 ビット C++ で記述される OS カーネルに取り組んでいます。C ++で32ビット保護モードを有効にする/ a20ゲートを有効にする方法を理解する必要があります。それで、それが可能かどうか教えてもらえますか?ありがとうございました。

4

1 に答える 1

5

C と C++ は、「a20 ゲート」とは何か、またそれを有効にする方法を知りません。「32ビットプロテクトモード」も同様。これは、特定のマシン コードを使用して行う必要があります。さて、正しい質問は、C++ プログラムからこのコードを呼び出す方法です。C++ コンパイラに応じて、これを行うにはいくつかの異なる方法があります。

asm1) 最も簡単な方法は、__asmまたは__asm__ブロックを使用して組み込みアセンブリ コードを使用することです。その使用方法については、C++ コンパイラのドキュメントを注意深く読んでください。すべてのコンパイラがそれをサポートしているかどうかはわかりません。

2) アセンブラーを使用して、C++ アプリケーションから呼び出すことができるように、アセンブリ コードを使用してコードを記述します。extern "C"C++ プログラムで関数を宣言して、呼び出すことができるようにするために使用します。

3)さらに厄介なことに、アセンブリコードをバイト配列に入れ、配列へのアドレスを関数へのポインターに変換して呼び出します。それが機能するために必要なマシンコードと C/C++ 呼び出し規約に関する豊富な知識。

于 2014-12-09T19:27:45.937 に答える