DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(as.info) Macro

Info Catalog (as.info) Long (as.info) Pseudo Ops (as.info) MRI
 
 `.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 ...'
      Begin the definition of a macro called MACNAME.  If your macro
      definition requires arguments, specify their names after the macro
      name, separated by commas or spaces.  You can supply a default
      value for any macro argument by following the name with `=DEFLT'.
      For example, these are all valid `.macro' statements:
 
     `.macro comm'
           Begin the definition of a macro called `comm', which takes no
           arguments.
 
     `.macro plus1 p, p1'
     `.macro plus1 p p1'
           Either statement begins the definition of a macro called
           `plus1', which takes two arguments; within the macro
           definition, write `\p' or `\p1' to evaluate the arguments.
 
     `.macro reserve_str p1=0 p2'
           Begin the definition of a macro called `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'
      Mark the end of a macro definition.
 
 `.exitm'
      Exit early from the current macro definition.
 
 `\@'
      `as' maintains a counter of how many macros it has executed in
      this pseudo-variable; you can copy that number to your output with
      `\@', but _only within a macro definition_.
 
Info Catalog (as.info) Long (as.info) Pseudo Ops (as.info) MRI
automatically generated byinfo2html