型に基づくエイリアス解析
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2009/08/30 03:50 UTC 版)
「エイリアス解析」の記事における「型に基づくエイリアス解析」の解説
プログラミング言語が型安全にコンパイルされ、コンパイラの型チェックが正しく、さらにローカル変数を参照することができない(MLや Haskell, Java など)とすると、有益な最適化を行うことが可能である。二つのメモリ位置が異なるエイリアス領域内にあることが既知である状況は多数ある。 異なる型の二つの変数は同じエイリアス領域にない。強く型付けられた情報で、メモリへの参照が禁止された(メモリへの参照を直接変更することができない)言語は異なる型の二つの変数は、同時に同じメモリ領域を共有することができないためである。 現在のスタックフレームに局所的な変数の割り当ては、以前の別のスタックからの割り当てと同じエイリアス領域に存在しない。これは、新しいメモリの割り当ては、他のすべてのメモリ割り当てから参照されないためである。 レコード型(構造体)の各フィールドは、自分のエイリアス領域を持つ。一般的には、型付けの原則として、同じ型のレコードしか参照することができない。ある型のすべてのレコードはメモリ内で同一の形式であるから、自分自身に対してしかエイリアスすることができない。 同様に、ある型の配列は自分のエイリアス領域を持つ。 コードに対してエイリアス解析を行う際、メモリへの各ロードとストアは領域ごとにラベル付けされる必要がある。すると、与えられたメモリ領域に対して重要な特性 Ai Bj すなわちエイリアス領域 i,j を得る。i = j ならば、Ai は Bj にエイリアスする可能性があり、 であればエイリアスしない。
※この「型に基づくエイリアス解析」の解説は、「エイリアス解析」の解説の一部です。
「型に基づくエイリアス解析」を含む「エイリアス解析」の記事については、「エイリアス解析」の概要を参照ください。
- 型に基づくエイリアス解析のページへのリンク