1

flex+bison を使用して簡単なアセンブラを作成しました。アセンブリ言語にプリプロセッサ (マクロ) を追加したいと考えています。flex+bison を使用するのはこれが初めてで、どうすればよいかわかりません。

flex+bison の別のインスタンスを追加し、前処理を完全に個別に行うことは適切ですか? それとも、処理のさまざまな段階でさまざまな構造の表現をサポートしていますか?

興味があれば、DCPU-16 アーキテクチャ用のアセンブラはこちらにあります。

4

2 に答える 2

4

あなたは間違いなく別のパーサーが必要です。これがgccのやり方です。前処理だけでコンパイルを停止できます(-E私は信じています)。単一のパーサーとして記述することは技術的には可能かもしれませんが、それははるかに厄介であり、それが役立つ理由は特にわかりませんが、分離しておくと、前処理だけでコンパイルを停止できます。 、プリプロセッサ/アセンブラ自体だけでなく、それを使用して作成されたプログラムのエラーを簡単に追跡できるようにします。

于 2012-04-14T04:07:55.750 に答える
3

あなたは私のものを見ることができます。私はあなたが持っているのと同じ考えになりました:P ここで見つけることができます 式をサポートしていますが、前方参照をサポートしたい場合は ast が必要であることに気付きました。たぶん、サイズが固定されていない op コードはアセンブラを作るのが難しいと Notch が判断したとき、彼はそれを変更するでしょう :)

この件に関するまともな本はFlex and Bison です。これは、レクサー状態をプッシュしてファイルバッファーを変更できる「状態」を実行する方法を示しています。それはまさにそのための初歩的なパーサー/レックスを示しています。それは私の学習に大いに役立ちました:)

于 2012-04-23T03:53:54.537 に答える