.macro
The commands .macro
and .endm
allow you to define macros that
generate assembly output. For example, this definition specifies a macro
sum
that puts a sequence of numbers into memory:
.macro sum from=0, to=5 .long \from .if \to-\from sum "(\from+1)",\to .endif .endm
With that definition, SUM 0,5 is equivalent to this assembly input:
.long 0 .long 1 .long 2 .long 3 .long 4 .long 5
.macro
macname.macro
macname macargs ...
.purgem
directive (See Purgem.) between the two
definitions. For example, these are all valid .macro
statements:
.macro comm
comm
, which takes no
arguments.
.macro plus1 p, p1
.macro plus1 p p1
plus1
,
which takes two arguments; within the macro definition, write
\p or \p1 to evaluate the arguments.
.macro reserve_str p1=0 p2
reserve_str
, with two
arguments. The first argument has a default value, but not the second.
After the definition is complete, you can call the macro either as
reserve_str a,b (with \p1 evaluating to
a and \p2 evaluating to b), or as reserve_str
,b (with \p1 evaluating as the default, in this case
0, and \p2 evaluating to b).
When you call a macro, you can specify the argument values either by
position, or by keyword. For example, sum 9,17 is equivalent to
sum to=17, from=9.
.endm
.exitm
\@
LOCAL
name [ , ... ]
LOCAL
is only available if you select “alternate
macro syntax” with --alternate or .altmacro
.
See .altmacro
.