条件付きアセンブリディレクティブ
このセクションの内容:
構文
ELSE
ELSEIF condition
ENDIF
IF condition
パラメータ
| 以下のいずれかです。 | |
絶対式 | 式に、前方参照または外部参照を含めることはできず、ゼロ以外の値はすべて真と見なされます。 | |
|
| |
|
|
説明
アセンブリ時にアセンブリ処理を制御するためにはIF、ELSE、およびENDIFディレクティブを使用します。IFディレクティブの後の条件が真ではない場合、ELSEまたはENDIFディレクティブが検出されるまで、後続の命令はコードを一切生成しません(つまり、アセンブルも構文チェックも行われません)。
IFディレクティブの後に新しい条件を追加するには、ELSEIFを使用します。条件付きアセンブリディレクティブはアセンブリ内の任意の場所で使用できますが、マクロ処理と一緒に使用すると最も有用です。
(ENDを除く)すべてのアセンブラディレクティブおよびファイルのインクルードは、条件付きディレクティブで無効にできます。各IFディレクティブはENDIFディレクティブで終了する必要があります。ELSE ディレクティブおよびENDIFディレクティブは任意指定であり、使用する場合は、IF...ENDIFブロック内に指定する必要があります。IF...ENDIFブロックとIF...ELSE...ENDIFブロックは、任意のレベルまでネストできます。
例
この例ではマクロを使用して、レジスタに定数を追加します。
?add macro a,b,c
if _args == 2
adds a,a,#b
elseif _args == 3
adds a,b,#c
endif
endm
name addWithMacro
section MYCODE:CODE(2)
arm
main ?add r1,0xFF ; This,
?add r1,r1,0xFF ; and this,
adds r1,r1,#0xFF ; are the same as this.
end