.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”を指定したマクロ定義をしています。 |