274
Section 3: Assembler
TI
-
89 / TI
-
92 Plus Sierra C Assembler Reference Manual
Not for Distribution
Beta Version February 2, 2001
An actual parameter that begins with a question mark ( ? ) is evaluated prior to
macro expansion; the result of the integer expression becomes the actual
parameter. The expression must be absolute and cannot contain any forward,
external, or undefined references (see section 3.3.7.3 Expression Evaluation).
The question mark operator is necessary when a formal parameter is situated in
a field where an expression cannot be specified (e.g., within in a symbol name).
It is also useful when an actual parameter is a complicated expression and its
corresponding formal parameter is referenced more than once in the body of the
macro.
The parameter list of a macro invocation can be continued on additional lines, if
necessary. A line to be continued must end with a comma that separates two
parameters, and the subsequent continuation line must have an ampersand ( & )
in the first column. If continuation lines are used, a comment can appear only
after the final continuation line.
3.8.1.4. Local
Labels
If a label is defined within a macro, it must be declared to be local to that macro if
the macro will be used more than once in a file; otherwise, multiple invocations of
the macro will produce multiple definitions of the label.
Labels local to a macro can be generated by using the \@ designator as part of
the label name or as the label name itself. When the macro is invoked, the \@
designator will be replaced with a period ( . ) followed by a unique four-digit
number. This number begins at zero and is incremented each time a macro is
invoked, thus providing up to 10,000 unique local macro scopes.
3.8.1.5. NARG
Symbol
The
NARG symbol is used in the body of a macro definition. When a macro is
expanded, this symbol is replaced with the index of the last parameter with which
the macro was invoked (even if this parameter was explicitly specified as null).
The NARG symbol is typically used in conjunction with conditional assembly
directives to allow a macro’s generated code to depend on the number of
parameters supplied to it. This symbol has no meaning outside of a macro
definition and can be used as an ordinary symbol.
3.8.1.6. MEXIT
Directive
The
MEXIT directive causes the current macro invocation to be terminated; any
remaining assembler statements in the macro definition are skipped (i.e., all
statements between the MEXIT and ENDM directives). Only the current
invocation is terminated; if macros are nested, control is returned to the previous
level of macro expansion.