ASM_COMMENT_START and gas divide operator
Craig Burley
burley@gnu.org
Thu May 14 10:17:00 GMT 1998
>Actually I would recommend against that -- I've had the pleasure of
>writing a gas port (HPPA) where certain characters had different
>meanings depending on their exact placement in a line. To this day
>it still doesn't work 100% correctly -- the grammar is inherently
>ambigious. In my case the character is a '!', and is used in
>comparison operations, as a gas built-in operator *and* as a line
>continuation character.
Oh, that's easy to handle. It's a built-in operator if it isn't
the first character in the line, otherwise it's a line-continuation
character if the line being continued would be syntactically and
semantically correct, also produced faster code, than if it was
interpreted as a line-comment character, otherwise it's a line-
comment character.
Yes, I'm being sarcastic. Especially regarding HPPA assembler
syntax as provided by HP, which was designed by someone who
should not have been let near a language-design project like
that, too often "little languages", whether assemblers, tools,
or C++, are designed by people who are unaware of, or give little
thought to, the outright readability of code written in the
language, in the sense that the basic semantics should be fairly
obvious *without* the reader having to memorize lots of semantic
information.
(In HPPA assembler's case, one glaring stupidity was the
nullified branches, which have completely different semantics
depending on whether the label being branched to happens to assemble
to a negative or positive offset! A smarter design would have
required the programmer to specify whether such a branch was
a "forward" or "backward" branch explicitly, then the assembler
and/or linker would complain if reality didn't match the programmer's
specification. I've never looked into whether GNU's HPPA as fixes
this botch; I gather GNU as fixes many botches, though, so it
wouldn't surprise me if it did, even though that might make
for some compatibility problems with existing HP as code.)
As far as characters meaning something special only when they're
in column 1: sometimes that's barely reasonable (C's "#" directives,
excluding #pragma), but most often it really just makes the
little language look more like the bad old days of Fortran,
in the sense that even *Fortran* no longer has such a weird
syntax in its modern incarnation (Fortran 90's "free" format).
tq vm, (burley)
More information about the Gas2
mailing list