私はスタックマシン用のコンパイラ(特にCIL)を開発しており、コードを基本ブロックのグラフに解析しました。ここからは、SSAをメソッドに適用することを検討していますが、それほどうまくいきません。私の最初の試み(グラフではなくフラットなリストを使って作業している間)は、コードを反復してSSA idsのスタックを保持していました(割り当てターゲットの場合)。彼らは使用されています。これは単一の基本ブロックではうまく動作しますが、Φ関数を生成する方法を把握することはできません。SSA for stack machine code
SSA IDにスタック位置を付けて、コード・パスが収束したときにスタックに残っているものを見ていますが、これはRight Way(TM)のようには見えません。物事をするの。
複数のコードパスにわたるスタック操作を追跡し、それらが収束したときに衝突を判断する簡単なアルゴリズムはありますか?
コンパイラはこれまでに何か来たのですか?私はまったく同じことをやろうと考えています。 –