a4_d0006: ラベル計算しかしないアセンブラについて
(1)
- プリプロセッサ関数でアセンブラを作ろうと思ったら、ラベル計算が必要で、そこだけは #define で作ることはできないから、ラベル計算だけをするアセンブラを作ったよ、という話がありました。
- その「ラベル計算だけをするアセンブラ」っていったいどんなものですか?と聞かれたので、その解説を書きます。
(2)
- DB() 命令を検出したら、かっこの中の式を計算して、それを char 配列に順番に書いていけばいいだけです。そんなアセンブラでよければ、10行ほどでできるでしょう(式の計算はライブラリにそういう関数があるので丸投げすればいいです)。
(3)
- DD_L() 命令で出てくる(ラベル番号1)は特別な意味を持っていて、それは現在位置を指し示すラベルなのです。 NASM 的に言えば $ のことです。
- だから DD_L(4, 1, -4); は相対ジャンプのためのオフセット値計算になっています。
- なお、 LBL() 命令は、ラベル宣言がここにあったということを示しているだけなので、この命令自体は何も出力しません。
こめんと欄
|