タグ

ionmonkeyとSSAに関するtaninswのブックマーク (2)

  • 大域値番号付け - Wikipedia

    大域的値番号付け(英: Global value numbering, GVN) とは、静的単一代入中間表現に基づくコンパイラ最適化手法の一つである。 GVN は共通部分式除去 (CSE) によっても取り除くことができない冗長なコードを取り除くことができる。一方、CSE は GVN で除去できないコードを取り除くことができ、両者はいずれも現代的なコンパイラに採用されている。大域的値番号付けは、値と番号の関連付けをブロックの境界を越えて行うことができ、また関連付けのアルゴリズムを計算する方法が異なるという点で局所的値番号付けとは区別される。 大域的値番号付けは、値番号を変数や式に割り当てることで動作する。等価な変数や式には同じ値番号を割り当てる。例えば下記のコードでは、 w := 3 x := 3 y := x + 4 z := w + 4 優秀な GVN のルーチンはw 、 x と y 、

  • 静的単一代入 - Wikipedia

    静的単一代入(せいてきたんいつだいにゅう、英: Static Single Assignment form, SSA)形式は、コンパイラ設計における 中間表現 (IR) のひとつで、各変数が一度のみ代入されるよう定義されたものである。もともとの中間表現における変数は「バージョン」に分割され、全ての変数の定義がバージョンを表現できるよう、通例新たな変数は元の名前に添え字を付けて表現される。SSA ではuse-def 連鎖が明示的であり、連鎖は要素を一つだけ持つ。 SSA はRon Cytron、Jeanne Ferrante、Barry Rosen、Mark Wegman、Ken Zadeck および IBM の研究者たちにより1980年代に開発された。 Scheme、ML、Haskell などの関数型言語のコンパイラでは、Fortran や C などのコンパイラで SSA の利用が期待され

    静的単一代入 - Wikipedia
    taninsw
    taninsw 2011/05/02
    "SSA と CPS は形式的に等価であり、最適化やコードの変換などがいずれかに施された場合、もう片方にも同様に適用することができる。"
  • 1