パス回数
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/12 10:21 UTC 版)
実行ファイルを生成するのにソースファイルを何回パス(走査)するかでアセンブラを分類できる。 ワンパスアセンブラ ソースコードを1回だけパスするアセンブラ。定義される前にシンボルが使われているとオブジェクトコードの最後に "errata" を置く必要があり、リンカまたはローダが未定義シンボルが使われていた位置にあるプレースホルダーを書き換える。あるいは、未定義なシンボルを使用するとエラーになる。 マルチパスアセンブラ 最初のパスで全シンボルとその値の表を作成し、その表を使ってその後のパスでコードを生成する。 どちらの場合も、アセンブラは最初のパスで各命令のサイズを確定させる必要があり、それによって後に出現するシンボルのアドレスを計算する。命令のサイズは後から定義されるオペランドの型や距離に依存することがあるため、アセンブラは最初のパスでは悲観的な見積もりをし、必要に応じてその後のパスまたは errata にて1つ以上のNOP命令(何もしない命令)を挿入してすき間を埋める必要がある。最適化を行うアセンブラでは、最初の悲観的コードをその後のパスで稠密なコードに書き換えてアドレスの再計算を行うことがある。 もともとワンパスアセンブラは高速であるためよく使われていた。マルチパス動作をするには、磁気テープを巻き戻したりパンチカードのデッキをセットし直して読み込む必要があったためである。現代のコンピュータではマルチパスであってもそのような遅延は生じない。マルチパスアセンブラは errata がないため、リンク処理(アセンブラが直接実行コードを生成する場合はローダの処理)が高速化される。
※この「パス回数」の解説は、「アセンブリ言語」の解説の一部です。
「パス回数」を含む「アセンブリ言語」の記事については、「アセンブリ言語」の概要を参照ください。
- パス回数のページへのリンク