[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A subset of allowable symbols (which we'll call subsyms) may be assigned
arbitrary string values. This is roughly equivalent to C preprocessor
#define macros. When as
encounters one of these
symbols, the symbol is replaced in the input stream by its string value.
Subsym names must begin with a letter.
Subsyms may be defined using the .asg
and .eval
directives
(See section .asg
,
See section .eval
.
Expansion is recursive until a previously encountered symbol is seen, at which point substitution stops.
In this example, x is replaced with SYM2; SYM2 is replaced with SYM1, and SYM1 is replaced with x. At this point, x has already been encountered and the substitution stops.
@code .asg "x",SYM1 .asg "SYM1",SYM2 .asg "SYM2",x add x,a ; final code assembled is "add x, a" |
Macro parameters are converted to subsyms; a side effect of this is the normal
as
'\ARG' dereferencing syntax is unnecessary. Subsyms
defined within a macro will have global scope, unless the .var
directive is used to identify the subsym as a local macro variable
see section .var
.
Substitution may be forced in situations where replacement might be ambiguous by placing colons on either side of the subsym. The following code:
@code .eval "10",x LAB:X: add #x, a |
When assembled becomes:
@code LAB10 add #10, a |
Smaller parts of the string assigned to a subsym may be accessed with the following syntax:
:symbol(char_index):
Evaluates to a single-character string, the character at char_index.
:symbol(start,length):
Evaluates to a substring of symbol beginning at start with length length.
This document was generated by Build Daemon user on October, 25 2005 using texi2html 1.76.