LOCAL (マクロ内)

MACRO 文によるマクロブロック内でのみ使用され、マクロブロック内に限って使用される局所名を宣言します。PROC 内の LOCAL 文とは異なるので注意してください。

構文    LOCAL    name ,...
例    LOCAL    L
    LOCAL    L1,L2,L3

name は局所名として宣言する名前です。カンマで区切っていくつでも宣言できます。宣言された name は、マクロ呼び出しのたびに一意の新しい名前に置き換えられます。この一意名は「?_X」という形式を持ち、「X」のところに数値が入ります。

たとえば、マクロ内でラベルを定義した場合、そのマクロを複数回呼び出すとラベル二重定義エラーが発生します。これを避けるには、LOCAL 文を使ってラベルを局所名にします。

次に例を示します。

CALLC    MACRO    FUNC
    LOCAL    L
L:    CALL    FUNC
    JC    L
    ENDM

このマクロを次のように 2 度呼び出します。

    CALLC    SUB1
    CALLC    SUB2

これらのマクロ呼び出しは、次のように展開されます。

?0m:    CALL    SUB1
    JC    ?0m
?1m:    CALL    SUB2
    JC    ?1m

「?」で始まる名前は、LASM が自動生成したラベルです。競合を避けるために、「?」で始まるラベル名はなるべくソースコードで使用しないでください。

[目次]