2008年03月27日
ワンパスとマルチパス
次のテストには絶対でてきますよこうゆう意地悪い問題。
確実ですので予習しておこうっと。
コンパイラは様々な処理の集合体であり、初期のコンピュータではメモリ容量が不十分であったため、一度に全ての処理を行うことができなかった。このためコンパイラを複数に分割し、ソースコード(あるいは何らかの中間的な表現)に何度も処理を施すことで解析や変換を行っていた。
一回でコンパイルが可能なものをワンパスコンパイラと呼び、一般にマルチパスコンパイラよりも高速で扱いやすい。多くの言語はワンパスでコンパイルできるよう意図して設計されている(例えば、Pascal)。
言語の設計によっては、コンパイラがソースコードを複数回読み込む必要がある。例えば、20行目に出現する宣言文が10行目の文の変換に影響を与える場合がある。この場合、一回目のパス(読み込み)で影響を受ける文の後にある宣言に関する情報を集め、二回目のパスで実際の変換を行う。
ワンパスの欠点は、高品質のコードに欠かせない最適化を行いにくいという点が挙げられる。最適化コンパイラが何回読み込みを行うかというのは決まっていないが、最適化の各フェーズで同じ式や文を何度も解析することもあるし、一回しか解析しない箇所もある。
コンパイラを小さなプログラムに分割する手法は、研究レベルでよく行われる。プログラムの正当性の判定は、対象プログラムが小さいほど簡単なためである。
マルチパスコンパイラは最終パスで機械語コードを出力するのが普通だが、次のような変種も存在する。
引用『ウィキペディア(Wikipedia)』
相互リンク
デリヘル 新横浜 保証人 保証人.net 保証人について 保証人.net 保証人・就職 保証人・就職 保証人 保証人紹介 デリヘル
- by
- at 19:10