1

アセンブリ言語を含むテキスト ファイルを生成する友人のカスタム CPU 用に、C# で C90 クロス コンパイラを作成しました。次に、これを彼が Python で記述したアセンブラーにフィードすると、マシン コードを含むテキスト ファイルが生成されます。次に、これをシリアル接続を介して彼のマシンに送信すると、この時点で彼のカスタム CPU がプログラムを実行します。

このプロセス全体を、最新の IDE で行うように「コンパイル」ボタンを押すだけの簡単なものにまとめたいと思います。また、最新の IDE について言えば、メモ帳以外で C コードを開発し、ファイル管理、インプレース コンパイル、構文の強調表示、インテリセンスなど、これらの最新の IDE が提供するいくつかの機能を利用できればよいでしょう。 .

現在、私はほとんどの開発に Visual Studio を使用しているため、既に C/C++ コンパイラにバンドルされていることをよく知っています。Visual C++ を使用してカスタム CPU 用の C コードを開発し、その「コンパイル」機能をオーバーライドして、C++ コンパイラの代わりにコンパイラ ツール チェーンを呼び出すことができれば、非常に便利です。

このアプローチで私が想定する問題は次のとおりです。

  1. 「コンパイル」機能をオーバーライドすることはできないと思います
  2. 構文の強調表示/インテリセンスは 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 形式であり、私が言及したツールのいずれとも互換性がないと思われます。どんな助けでも大歓迎です。

4

1 に答える 1

0

Visual Studio 2010 から出荷された新しい MSBuild ベースの Visual C++ ツールチェーンは、Microsoft 以外のツールチェーンにフレームワーク レベルのサポートを提供します。コンパイラに固有のビルド ファイルを提供する必要がありますが、結果を Visual Studio にきれいに統合することができます。

誰かが実際にこれを行った例は知りません。

于 2013-08-09T11:32:08.673 に答える