.irp


.irp疑似命令と.endm疑似命令の間にある一連の文をオペランドで指定された実パラメータ(左から順)で仮パラメータを置き換えながら,実パラメータの数だけ繰り返し展開します。

[指定形式]

シンボル欄
ニモニック欄
オペランド欄
コメント欄
[ラベル:]
.irp
  :
.endm
仮パラメータ[ 実パラメータ[, ... ]]
[; コメント]
 
[; コメント]

[機能]

-

.irp疑似命令と.endm疑似命令の間にある一連の文(IRP-ENDMブロックと呼びます)をオペランドで指定された実パラメータ(左から順)で仮パラメータを置き換えながら,実パラメータの数だけ繰り返し展開します。

[用途]

-

ソース中で,一部分だけ変数となる一連の文を連続して繰り返し記述したい場合に,IRP-ENDM疑似命令を使用します。

[詳細説明]

-

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

-

IRP-ENDMブロックの途中に.exitmが現れると,その位置で展開を終了します。

-

IRP-ENDMブロック内に,マクロを定義を記述するとエラーを出力します。

-

IRP-ENDMブロック内に,アセンブル制御命令を記述することができます。

-

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

[使用例]

.cseg   text
 
.irp    PARA 0xA, 0xB, 0xC      ; (1)
    ; IRP-ENDMブロック
        add     PARA, r12
        mov     r11, r12
.endm                           ; (2)
    ; ソース本文

(1)

仮パラメータがPARA,実パラメータが0xA,0xB,0xCの3個です。
仮パラメータ“PARA”を実引数“0xA”,“0xB”,“0xC”に置き換えながら,IRP-ENDMブロックを実パラメータの数3回分展開することを指示します。

(2)

IRP-ENDMブロックの終了を示します。