IF、ELSE、ENDIF、ELIF

IF ディレクティブは、命令とディレクティブのシーケンスをアセンブルするかどうかを制御する条件を定義します。[IF と同じ意味です。

ELSE ディレクティブは、前の条件が満たされなかった場合にアセンブルされる命令とディレクティブのシーケンスの開始位置をマークします。|ELSE と同じ意味です。

ENDIF ディレクティブは、条件付きでアセンブルされる命令とディレクティブのシーケンスの終了位置をマークします。]ENDIF と同じ意味です。

ELIF ディレクティブは、条件をネストまたは反復することなく、ELSE IF と同じ構造を作成します。

Show/hide構文

    IF logical-expression
          … ; コード
    {ELSE
          … ; code}
    ENDIF

各項目には以下の意味があります。

logical-expression

{TRUE} または {FALSE} を求める式を指定します。

Show/hide使用法

指定された条件下においてのみアセンブルまたは実行される命令とディレクティブのシーケンスには、IFENDIF に加え、必要に応じて ELSE を組み合わせて使用します。

IF...ENDIF 条件はネストできます。

Show/hideELIF の使用

ELIF を使用せずに、以下のようなネストされた条件付き命令セットを作成できます。

    IF logical-expression
        instructions
    ELSE
        IF logical-expression2
            instructions
        ELSE
            IF logical-expression3
                instructions
            ENDIF
        ENDIF
    ENDIF

このようなネスト構造は、256 の深さまでネストできます。

ELIF を使用すると、同じ構造をより簡単に記述できます。

    IF logical-expression
        instructions
    ELIF logical-expression2
        instructions
    ELIF logical-expression3
        instructions
    ENDIF

この構造では、現在のネストの深さに IF...ENDIF ペアの 1 レベルだけが追加された深さになります。

Show/hide

Example 3 では、NEWVERSION が定義されている場合は最初の命令セットがアセンブルされ、定義されていない場合は 2 番目の命令セットがアセンブルされます。

Example 3. 定義される変数に基づく条件付きアセンブリ

        IF :DEF:NEWVERSION
            ; 最初の命令またはディレクティブのセット
        ELSE
            ; 2 番目の命令またはディレクティブのセット
        ENDIF

armasm を以下のように呼び出した場合には NEWVERSION が定義されるため、最初の命令およびディレクティブのセットがアセンブルされます。

armasm --predefine "NEWVERSION SETL {TRUE}" test.s

armasm を以下のように呼び出した場合には NEWVERSION が定義されていないため、2 番目の命令およびディレクティブのセットがアセンブルされます。

armasm test.s

Example 4 では、NEWVERSION の値が {TRUE} の場合に最初の命令セットがアセンブルされ、それ以外の場合は 2 番目の命令セットがアセンブルされます。

Example 4. 変数の値に基づく条件付きアセンブリ

        IF NEWVERSION = {TRUE}
            ; 最初の命令またはディレクティブのセット
        ELSE
            ; 2 番目の命令またはディレクティブのセット
        ENDIF

armasm を以下のように呼び出した場合には、最初の命令およびディレクティブのセットがアセンブルされます。

armasm --predefine "NEWVERSION SETL {TRUE}" test.s

armasm を以下のように呼び出した場合には、2 番目の命令およびディレクティブのセットがアセンブルされます。

armasm --predefine "NEWVERSION SETL {FALSE}" test.s

Show/hide関連項目

Copyright © 2014 ARM. All rights reserved.ARM DUI 0802AJ
Non-ConfidentialID061814