Correct info about evaluating macro args (distinct from evaluating preprocessor
authorRoland Pesch <pesch@cygnus>
Fri, 18 Feb 1994 01:10:24 +0000 (01:10 +0000)
committerRoland Pesch <pesch@cygnus>
Fri, 18 Feb 1994 01:10:24 +0000 (01:10 +0000)
vars); add version number (1); formatting improvements.

gas/doc/gasp.texi

index 453c822437471a7c3a8bfa0c049d8ad06ec12346..854cfb8653fc39d27fcd81a52b804156310fcb73 100644 (file)
@@ -12,7 +12,7 @@
 @ifinfo
 @format
 START-INFO-DIR-ENTRY
-* gasp:(gasp).                     The GNU Assembler Preprocessor
+* gasp: (gasp).                     The GNU Assembler Preprocessor
 END-INFO-DIR-ENTRY
 @end format
 @end ifinfo
@@ -24,9 +24,10 @@ END-INFO-DIR-ENTRY
 @settitle GASP
 @titlepage
 @c FIXME boring title
+@title DRAFT EDITION
+@sp 4
 @title GASP, an assembly preprocessor
-@c FIXME! Get a version number, global-replace '??'
-@subtitle for GASP version ??
+@subtitle for GASP version 1
 @sp 1
 @subtitle January 1994
 @author Roland Pesch
@@ -80,7 +81,7 @@ into another language, under the above conditions for modified versions.
 
 GASP is a preprocessor for assembly programs.
 
-This file describes version ?? of GASP.
+This file describes version 1 of GASP.
 
 Steve Chamberlain wrote GASP; Roland Pesch wrote this manual.
 
@@ -371,7 +372,6 @@ You can use variables in @sc{gasp} to represent strings, registers, or
 the results of expressions.
 
 You must distinguish two kinds of variables: 
-@c FIXME!  Is this crud true about conditional comparisons vs variables?
 @enumerate
 @item
 Variables defined with @code{.EQU} or @code{.ASSIGN}.  To evaluate this
@@ -391,8 +391,8 @@ while loops; @sc{gasp} only evaluates these variables when writing
 assembly output.
 
 @item
-Variables for use during preprocessing.  These are defined as macro
-arguments, or with @code{.ASSIGNC} or @code{.ASSIGNA}.  To evaluate this
+Variables for use during preprocessing.  You can define these
+with @code{.ASSIGNC} or @code{.ASSIGNA}.  To evaluate this
 kind of variable, write @samp{\&} before the variable name; for example,
 
 @cartouche
@@ -404,6 +404,10 @@ opcit  .ASSIGNA  47
        .AENDW
 @end example
 @end cartouche
+
+@sc{gasp} treats macro arguments almost the same way, but to evaluate
+them you use the prefix @samp{\} rather than @samp{\&}.
+@xref{Macros,, Defining your own directives}.
 @end enumerate
 
 @ftable @code
@@ -439,11 +443,13 @@ that is at the left margin.  You may specify a colon after the variable
 name if you wish; the first example above could have started @samp{eg:}
 with the same effect.
 
+@c pagebreak makes for better aesthetics---ensures macro and expansion together
+@page
 @node Macros
 @section Defining your own directives
 
 The commands @code{.MACRO} and @code{.ENDM} allow you to define macros
-that generate assembly output, and that you can use with a syntax
+that generate assembly output.  You can use these macros with a syntax
 similar to built-in @sc{gasp} or assembler directives.  For example,
 this definition specifies a macro @code{SUM} that adds together a range of
 consecutive registers:
@@ -494,23 +500,27 @@ arguments.
 @item .MACRO PLUS1 P, P1
 @itemx .MACRO PLUS1 P P1
 Either statement begins the definition of a macro called @code{PLUS1},
-which takes two arguments; within the macro definition, these arguments
-are evaluated as @samp{\&P} and @samp{\&P1}.
+which takes two arguments; within the macro definition, write
+@samp{\P} or @samp{\P1} to evaluate the arguments.
 
 @item .MACRO RESERVE_STR P1=0 P2
 Begin the definition of a macro called @code{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
-@samp{RESERVE_STR @var{a},@var{b}} (with @samp{\&P1} evaluating to
-@var{a} and @samp{\&P2} evaluating to @var{b}), or as @samp{RESERVE_STR
-,@var{b}} (with @samp{\&P1} evaluating as the default, in this case
-@samp{0}, and @samp{\&P2} evaluating to @var{b}).
+@samp{RESERVE_STR @var{a},@var{b}} (with @samp{\P1} evaluating to
+@var{a} and @samp{\P2} evaluating to @var{b}), or as @samp{RESERVE_STR
+,@var{b}} (with @samp{\P1} evaluating as the default, in this case
+@samp{0}, and @samp{\P2} evaluating to @var{b}).
 @end table
 
-When you call a macro, the values are assigned by position to each
-argument name.  Macro arguments are preprocessor variables in the same
-way as variables you define with @samp{.ASSIGNA} or @samp{.ASSIGNC}, and
-you can therefore use them in conditionals or for loop control.
+When you call a macro, you can specify the argument values either by
+position, or by keyword.  For example, @samp{SUM 9,17} is equivalent to
+@samp{SUM TO=17, FROM=9}.  Macro arguments are preprocessor variables
+similar to the variables you define with @samp{.ASSIGNA} or
+@samp{.ASSIGNC}; in particular, you can use them in conditionals or for
+loop control.  (The only difference is the prefix you write to evaluate
+the variable: for a macro argument, write @samp{\@var{argname}}, but for
+a preprocessor variable, write @samp{\&@var{varname}}.)
 
 @item @var{name} .MACRO
 @itemx @var{name} .MACRO ( @var{macargs} @dots{} )