SSA 形式からの変換
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/05/08 08:22 UTC 版)
「静的単一代入」の記事における「SSA 形式からの変換」の解説
SSA 形式は直接実行するために有用な形式ではないため、元のコードとの直接の対応関係を保持した中間コード上で用いられることが多い。これは、SSA を既存の中間コードの要素(基本ブロック、命令、オペランドなど)と SSA での対応する要素をマップした関数として構築することで実現できる。SSA が必要なくなればこれらのマップ関数は廃棄してよく、最適化された新しい IR が残る。 SSA 形式で最適化を行うと、非常に複雑な SSA の網目構造が作成される。すなわちオペランドが必ずしも同じ起点を持たない Φ 命令が存在することになる。このような場合色分け(color-out)アルゴリズムが用いられる。単純なアルゴリズムではそれぞれの以前のパスに従ってコピーを作成するが、 Φ 関数の出力ではなく入力となる起点のシンボルが多数できてしまう。SSA からコピーの回数を少なくするためのアルゴリズムが複数あり、大半のものは干渉グラフやコピーの融合を行うための近似を行う。
※この「SSA 形式からの変換」の解説は、「静的単一代入」の解説の一部です。
「SSA 形式からの変換」を含む「静的単一代入」の記事については、「静的単一代入」の概要を参照ください。
- SSA 形式からの変換のページへのリンク