[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] searching for avr-gcc assembler reference
From: |
Denis Chertykov |
Subject: |
Re: [avr-gcc-list] searching for avr-gcc assembler reference |
Date: |
Thu Jan 18 10:13:06 2001 |
address@hidden (J Wunsch) writes:
> Denis Chertykov <address@hidden> wrote:
>
> > You wrong.
> > gas have a macros.
> >
> > Also you can try to use `gasp' - Gnu Assembler Macro Preprocessor.
>
> Well, but they are not built into gas... I only looked up the `info'
> pages for gas.
I can only repeat !!!
You wrong.
gas have a macros.
Fragment from info:
`.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*.