私は、32 ビット C++ で記述される OS カーネルに取り組んでいます。C ++で32ビット保護モードを有効にする/ a20ゲートを有効にする方法を理解する必要があります。それで、それが可能かどうか教えてもらえますか?ありがとうございました。
1 に答える
5
C と C++ は、「a20 ゲート」とは何か、またそれを有効にする方法を知りません。「32ビットプロテクトモード」も同様。これは、特定のマシン コードを使用して行う必要があります。さて、正しい質問は、C++ プログラムからこのコードを呼び出す方法です。C++ コンパイラに応じて、これを行うにはいくつかの異なる方法があります。
asm
1) 最も簡単な方法は、__asm
または__asm__
ブロックを使用して組み込みアセンブリ コードを使用することです。その使用方法については、C++ コンパイラのドキュメントを注意深く読んでください。すべてのコンパイラがそれをサポートしているかどうかはわかりません。
2) アセンブラーを使用して、C++ アプリケーションから呼び出すことができるように、アセンブリ コードを使用してコードを記述します。extern "C"
C++ プログラムで関数を宣言して、呼び出すことができるようにするために使用します。
3)さらに厄介なことに、アセンブリコードをバイト配列に入れ、配列へのアドレスを関数へのポインターに変換して呼び出します。それが機能するために必要なマシンコードと C/C++ 呼び出し規約に関する豊富な知識。
于 2014-12-09T19:27:45.937 に答える