私はカーネルの作成に取り組んでおり、プロジェクトで一緒に働いている友人が何人かいます。しばらくプロジェクトをコンパイルするために DJGPP を使用してきましたが、この方法でコンパイルするとクロスプラットフォームの互換性の問題が発生し、プロジェクトのメインの Partnet を Windows XP でコンパイルできなくなりました。(DJGPP の GCC は、Windows XP では 127 を超える引数リストに問題がありますが、Vista では同じ引数リストに問題はありません。つまり、一度だけ、Vista は XP よりも何かでうまく機能します。oO)
とにかく、DJGPP でコンパイルするためにいくつかの汚いハックを試みるよりも、DJGPP を完全に捨てて、Windows 用の GCC の別のバージョンを使用することにしました。問題は、(私の知る限り) MinGW では、コードのアセンブリ部分に NASM 構文を使用できないことです。この時点ですべてを AT&T 構文に変換するのは少し面倒です。もちろん、プロジェクトのかなり初期の段階なので可能ですが、面倒です。
だから今、あなたは問題を知っています。私の質問は次のとおりです。Windows 用のどの GCC コンパイラ ディストリビューションを使用すると、このプロジェクトをそれ自体に最も簡単に移植できますか? 理想的には、NASM アセンブラー構文を実行でき、外部 dll に依存せず (これはカーネルであり、アクセスできません)、Windows 上の複数のバージョンで一貫して動作するものを探しています。これを行うための最良の方法についての推奨事項は何ですか?また、Windows用のGCCのどのバージョンをお勧めしますか?
プロジェクトを AT&T 構文に変換する必要がある場合は、それで問題ないことに注意してください。実際には NASM を使用してそのアセンブリ ビットをアセンブルしており、有効な .o ファイルが生成されますが、MinGW は何らかの理由でそれをリンクできません。インライン アセンブリ ビット (おそらく 5 行) は、GCC で必要な AT&T 構文になっていると思います。
ありがとう!