0

Flex と Bison を使用してミニ Fortran コンパイラを作成しています。ここまでで、字句解析と構文解析が完了しました。私は型チェックのセマンティック分析を行っており、IR を選択する必要があります。私のターゲット マシンは MIPS です。したがって、MIPS IAS に基づく最終的なコード生成が必要です。したがって、良い IR は 4 倍だと思います。しかし、いくつかの最適化を紹介したいと思います。そのため、(ハッシュ テーブルを使用して) DAG 構造を構築しました。IR には 2 つのパスがあります。4 倍または DAG と 4 倍です。

DAG を IR として使用する場合、ステートメントにバックパッチ メソッドを使用するにはどうすればよいですか? 4倍なら簡単です。一方、DAG はより抽象的です。強制的に4倍に変換する必要があります。そんなこと知ってる。私の恐れはバックパッチです。

4

1 に答える 1

0

高レベルの設計に集中する必要があるときに、低レベルの詳細について心配していると思います。その上、現在のコンパイラは 4 倍を使用せず、SSA (Static Single Assignment) を使用します。最終的なコード生成については、おそらく LCC コンパイラを見てください。ツリー マッチングによって局所的に最適なコードを生成する簡単な方法を使用しています。

チートする方法は、高水準言語 (C など) を発行し、面倒な作業をそのコンパイラーに任せることです (そして、無料で移植性を得ることができます ;-)。

comp.compilersUsenet グループがなんらかの形で存続しているかどうかはわかりませんが、FAQが最初の目的地になるでしょう。ただし、恐ろしく古い可能性があります。

于 2014-03-13T23:09:14.463 に答える