2パスアセンブラ
「パス」(pass)というのはプログラムソースの走査回数を指す。
1回しかソースを読み込まないなら1パス。2回読み込むなら2パス。
プログラムの後の方に書かれているラベルのアドレスは、そこに至るまで確定することができない。
code:asm
CMP AX, 1
JZ MYLABEL ;MYLABEL のアドレスはここを初めて見た時には分からない。
...
MYLABEL:
...
これを前方参照問題と呼ぶ。(前方というのは forward で、進む先にあるから前方になる。) このため、1パス目では、前方にあるラベルの解決は後回しにして翻訳して、シンボルテーブルにラベルとアドレスの組を保存していく。 2パス目では、シンボルテーブルを読み出しながら翻訳する。