I've been working on re-writing the docs for extended-asm. However, as
bad as the extended-asm docs are, the NON extended asm docs (or would
that be "basic asm"?) appear to be completely missing. Does anyone have
a link to the basic asm docs (even an old version)?
If no one can point me to some docs, is there anyone here who has used
basic asm? I mean for something beyond a simple 1-liner (using global
symbols is a plus). I'd really appreciate your input as I create these
docs.
In case you weren't aware (I sure wasn't), yes, there really are
important differences between:
asm("{}"); // basic asm
and
asm("{}" : ); // extended asm (apparently anything with at least 1 colon)
The second statement processes the extended asm dialect and therefore
compiles. The first does not process the dialect, and therefore the
assembler chokes on the braces as unrecognized text. This tiny sample
illustrates that gcc does indeed take significantly different code paths
when processing these two statements. Looking at the gcc source (see
lines 2471 & 2498 in
http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/final.c?revision=198641&view=markup),
this appears to be by design so I don't view this as a gcc bug. However
I do believe it is important to doc this rather unexpected behavior. As
well as several other bits of behavior I have observed.
dw