|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。 ・ 静的 : [せいてき] (adj-na,n) static ・ 的 : [まと, てき] 【名詞】 1. mark 2. target ・ 単 : [ひとえ, たん] 【名詞】 1. one layer 2. single ・ 単一 : [たんいつ] 【名詞・形容詞】 1. single 2. simple, simplex 3. sole 4. individual 5. unitory ・ 一 : [いち] 1. (num) one ・ 一代 : [いちだい] 【名詞】 1. generation 2. lifetime 3. age ・ 代 : [よ, しろ] 【名詞】 1. world 2. society 3. age 4. generation ・ 代入 : [だいにゅう] (n,vs) substitution ・ 入 : [にゅう] 【名詞】 1. go in
静的単一代入(せいてきたんいつだいにゅう、)形式は、コンパイラ設計における 中間表現 (IR) のひとつで、各変数が一度のみ代入されるよう定義されたものである。もともとの中間表現における変数は「バージョン」に分割され、全ての変数の定義がバージョンを表現できるよう、通例新たな変数は元の名前に添え字を付けて表現される。SSA ではuse-def 連鎖が明示的であり、連鎖は要素を一つだけ持つ。 SSA はRon Cytron、Jeanne Ferrante、Barry Rosen、Mark Wegman、Ken Zadeck および IBM の研究者たちにより1980年代に開発された。 Scheme、ML、Haskell などの関数型言語のコンパイラでは、Fortran や C などのコンパイラで SSA の利用が期待される箇所で継続渡しスタイル (CPS) を用いるのが一般的である。SSA と CPS は形式的に等価であり、最適化やコードの変換などがいずれかに施された場合、もう片方にも同様に適用することができる。 ==SSA の利点== 変数の性質を簡単なものにすることにより様々なコンパイラ最適化を簡略化すると同時にその結果を改善することが SSA の第一の利点である。 例として、下記のようなコードを考える。 y := 1 y := 2 x := y 人間であれば、最初の代入が不要であり、3行目で使用されている y の値が2行目の代入の結果であることが分かる。これをプログラムで行う場合には、reaching definition analysisにより求める必要がある。しかし、プログラムが静的単一代入形式であれば、いずれも即座に判定可能である。y1 := 1 y2 := 2 x1 := y2 SSA を利用することにより、下記のコンパイラ最適化アルゴリズムを実現したり、あるいは改善することができる。 *定数畳み込み *疎な条件分岐を考慮した定数伝播 *デッドコード削除 *大域値番号付け *部分冗長性除去 *演算子強度低減 *レジスタ割り付け 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「静的単一代入」の詳細全文を読む スポンサード リンク
|