OAR

RTEMS GNU Tools On-Line Library


Loops

PREV UP NEXT Bookshelf GASP

3.2: Repetitive sections of assembly

Two preprocessor directives allow you to repeatedly issue copies of the same block of assembly code.

.AREPEAT aexp
.AENDR
If you simply need to repeat the same block of assembly over and over a fixed number of times, sandwich one instance of the repeated block between .AREPEAT and .AENDR. Specify the number of copies as aexp (which must be an absolute expression). For example, this repeats two assembly statements three times in succession:
        .AREPEAT        3
        rotcl   r2
        div1    r0,r1
        .AENDR
.AWHILE expra cmp exprb
.AENDW
.AWHILE stra cmp strb
.AENDW
To repeat a block of assembly depending on a conditional test, rather than repeating it for a specific number of times, use .AWHILE. .AENDW marks the end of the repeated block. The conditional comparison works exactly the same way as for .AIF, with the same comparison operators (see Conditionals).

Since the terms of the comparison must be absolute expression, .AWHILE is primarily useful within macros. See Macros.

You can use the .EXITM preprocessor directive to break out of loops early (as well as to break out of macros). See Macros.


PREV UP NEXT Bookshelf GASP

Packaging copyright © 1988-2000 OAR Corporation
Context copyright by each document's author. See Free Software Foundation for information.