Contents | < Browse | Browse >
#-------------------------------------------------------------------#
| Preprocessor / assembler macros |
#-------------------------------------------------------------------#
Macros with multiple statements like the assembler "MACRO" macros
are also supported. Quite useful when using PowerPC asm, but is not
restricted to asm instructions.
<label> MACRO
...
...
...
ENDM
Arguments are received in "\1" to "\9".
"\0" is reserved for an optional "." / ".L" / ".W" / ".B" / ".D".
example:
A PowerPC asm macro:
ROTLW MACRO -> Rotate Left Word
RLWNM\0 \1,\2,\3,0,31
ENDM
Using the macro:
ROTLW R3, R4, R5 -> produces : RLWNM R3, R4, R5, 0, 31
ROTLW. R3, R4, R5 -> produces : RLWNM. R3, R4, R5, 0, 31
ROTLW x,y -> produces : RLWNM x y, 0, 31 -> error !
A different FOR construct:
FOR2 MACRO
\1
WHILE \2
ENDM
ENDFOR2 MACRO
\1
ENDWHILE
ENDM
Use it:
FOR2 x := 3, x < 1000
WriteF('x=\dn', x)
ENDFOR2 x := x * 3
"EXPORT" may be used:
EXPORT COPY MACRO
...
To use a MACRO, it must be the first thing on a line (white
space not counted) or it will not be recognised as a MACRO.