Everything

.macro


.macro疑似命令と.endm疑似命令の間に記述された一連の文に対し,シンボル欄で指定したマクロ名を付け,マクロを定義します。

[指定形式]

シンボル欄
ニモニック欄
オペランド欄
コメント欄
マクロ名
.macro
   :
マクロ・ボディ
   :
.endm 
[仮パラメータ[, ... ]]
[; コメント]
 
 
 
[; コメント]

[機能]

-

.macro疑似命令と.endm疑似命令の間に記述された一連の文(マクロ・ボディと呼びます)に対し,シンボル欄で指定したマクロ名を付け,マクロの定義を行います。

[用途]

-

ソース中で,使用頻度の高い一連の文をマクロ定義しておきます。その定義以降では,定義されたマクロ名を記述するだけで,そのマクロ名に対応するマクロ・ボディが展開されます。

[詳細説明]

-

.macro疑似命令には,対応する.endm疑似命令がなければ,エラーとなります。

-

シンボル欄に記述するマクロ名の規則については,「(2) シンボル」を参照してください。

-

マクロを呼び出す場合は,ニモニック欄に定義済みのマクロ名を記述します。マクロ定義より先に参照を行った場合,エラーが出力されます。

-

オペランド欄に記述する仮パラメータの規則については,シンボル記述上の規則と同じです。

-

仮パラメータは,マクロ・ボディ内でのみ有効です。

-

仮パラメータと実パラメータの個数が一致しない場合はエラーが出力されます。

-

仮パラメータの最大数は利用可能なメモリ量に依存します。

-

1つのモジュール内でのマクロ定義の最大数には,特に制限はありません。メモリが使えるかぎり定義することができます。

-

マクロ定義内で現在定義中のマクロの呼び出しを行った場合,エラーが出力されます。

-

マクロ呼び出しにおいて実パラメータに指定可能なものは,ラベル名,シンボル名,数値,レジスタ,および命令ニモニックのみです。
ラベル式(LABEL-1),参照方法指定ラベル(#LABEL),またはベース・レジスタ指定([gp])などを指定した場合,指定された実パラメータに依存したメッセージが出力され,アセンブルが中止されます。

-

マクロ・ボディ内には,文の並びが指定可能です。オペランドなど,文の一部を指定することはできません。

-

マクロ定義中のマクロ・ボディ内で,マクロ定義を記述した場合は,エラーを出力し,処理が継続されます(対応する.endm疑似命令までに記述された内容は無視されます)。そのマクロ名を参照した場合は定義エラーとなります。

[使用例]

ADMAC   .macro  PARA1, PARA2    ; (1)
        mov     PARA1, r12
        add     PARA2, r12
        .endm                   ; (2)
 
        ADMAC   0x10, 0x20      ; (3)

(1)

マクロ名“ADMAC”,2つの仮引数“PARA1”,“PARA2”を指定したマクロ定義をしています。

(2)

マクロ定義の終わりを示します。

(3)

マクロADMACを参照しています。