6.4.4. IF, ELSE, ENDIF, and ELIF

The IF directive introduces a condition that is used to decide whether to assemble a sequence of instructions and/or directives. [ is a synonym for IF.

The ELSE directive marks the beginning of a sequence of instructions and/or directives that you want to be assembled if the preceding condition fails. | is a synonym for ELSE.

The ENDIF directive marks the end of a sequence of instructions and/or directives that you want to be conditionally assembled. ] is a synonym for ENDIF.

The ELIF directive creates a structure equivalent to ELSE IF, without the requirement for nesting or repeating the condition. See Using ELIF for details.

Syntax

    IF logical-expression      ...    {ELSE      ...}    ENDIF

where:

logical-expression

is an expression that evaluates to either {TRUE} or {FALSE}.

See Relational operators.

Usage

Use IF with ENDIF, and optionally with ELSE, for sequences of instructions and/or directives that are only to be assembled or acted on under a specified condition.

IF...ENDIF conditions can be nested (see Nesting directives).

Using ELIF

Without using ELIF, you can construct a nested set of conditional instructions like this:

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

A nested structure like this can be nested up to 256 levels deep.

You can write the same structure more simply using ELIF:

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

This structure only adds one to the current nesting depth, for the IF...ENDIF pair.

Examples

Example 6.3 assembles the first set of instructions if NEWVERSION is defined, or the alternative set otherwise.

Example 6.3. Assembly conditional on a variable being defined

        IF :DEF:NEWVERSION
            ; first set of instructions/directives
        ELSE
            ; alternative set of instructions/directives
        ENDIF

Invoking armasm as follows defines NEWVERSION, so the first set of instructions and directives are assembled:


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

Invoking armasm as follows leaves NEWVERSION undefined, so the second set of instructions and directives are assembled:


armasm test.s

Example 6.4 assembles the first set of instructions if NEWVERSION has the value {TRUE}, or the alternative set otherwise.

Example 6.4. Assembly conditional on a variable value

        IF NEWVERSION = {TRUE}
            ; first set of instructions/directives
        ELSE
            ; alternative set of instructions/directives
        ENDIF

Invoking armasm as follows causes the first set of instructions and directives to be assembled:


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

Invoking armasm as follows causes the second set of instructions and directives to be assembled:


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

Copyright © 2002-2005 ARM Limited. All rights reserved.ARM DUI 0204F
Non-Confidential