アセンブリ言語を含むテキスト ファイルを生成する友人のカスタム CPU 用に、C# で C90 クロス コンパイラを作成しました。次に、これを彼が Python で記述したアセンブラーにフィードすると、マシン コードを含むテキスト ファイルが生成されます。次に、これをシリアル接続を介して彼のマシンに送信すると、この時点で彼のカスタム CPU がプログラムを実行します。
このプロセス全体を、最新の IDE で行うように「コンパイル」ボタンを押すだけの簡単なものにまとめたいと思います。また、最新の IDE について言えば、メモ帳以外で C コードを開発し、ファイル管理、インプレース コンパイル、構文の強調表示、インテリセンスなど、これらの最新の IDE が提供するいくつかの機能を利用できればよいでしょう。 .
現在、私はほとんどの開発に Visual Studio を使用しているため、既に C/C++ コンパイラにバンドルされていることをよく知っています。Visual C++ を使用してカスタム CPU 用の C コードを開発し、その「コンパイル」機能をオーバーライドして、C++ コンパイラの代わりにコンパイラ ツール チェーンを呼び出すことができれば、非常に便利です。
このアプローチで私が想定する問題は次のとおりです。
- 「コンパイル」機能をオーバーライドすることはできないと思います
- 構文の強調表示/インテリセンスは C90 標準に準拠しません。私は#2と一緒に暮らすことができますが、#1が可能かどうか知りたい.
これに失敗すると、カスタム コンパイラを Visual Studio に統合する必要があります。そのためには、ANTLR または MPlex/MPPG と互換性のある C90 文法ファイルを用意して、C# でパーサー/スキャナーを出力できるようにする必要があります。スタジオは、構文の強調表示/インテリセンスに使用できます。
ANTLR サイトにリストされている文法ファイルは C99 です。C90の実装を知っている人はいますか? http://slps.github.io/zoo/#ANSI_C90には 1 つあるようですが、文法は BGF、EBNF、DMS BNF、および SDF 形式であり、私が言及したツールのいずれとも互換性がないと思われます。どんな助けでも大歓迎です。