[sci.electronics] C compiler for 68HC11

kirk@hobbes.catt.ncsu.edu (Kirk Krauss) (01/18/91)

   Anybody know where I can find a good C compiler (preferably ANSI)
   for the Motorola 68HC11 evaluation board (EVB) or compatible?

   I'm looking for a cross-compiler which runs on a PC or Mac and
   generates S-records for serial downloading to the EVB.  An 
   emulator would also be handy.  If you're in the know about vendors
   for such stuff, please send mail to:

                                             kirk@catt.ncsu.edu

lusky@ccwf.cc.utexas.edu (Jon Lusky) (01/18/91)

In article <1991Jan18.024240.14924@ncsuvx.ncsu.edu> kirk@hobbes.catt.ncsu.edu (Kirk Krauss) writes:
>
>   Anybody know where I can find a good C compiler (preferably ANSI)
>   for the Motorola 68HC11 evaluation board (EVB) or compatible?
>
A C compiler for the PC which generates code to be loaded to the EVBU is
available on the Motorola Tech Support BBS here in Austin, Tx.  I don't have
the number anymore (it was in the docs that came with my EVBU)...  last time
I called it was back in May so I can't be sure that its still up, but I would
assume it is.I got the C compiler from them but never used it and eventually erased it since I was able to get motorola to code the software for me (
the board was upgraded to 40 channels of A/D and was being used along with a
TNC and ham radio as a Telemetry system for the UT Austin solar powered race car
).  I would reccomend calllling motorola here in austin and trying to get ahold of one of their 68HC11 tech support people.
   -----------------------------------------------------------------
   *** INSERT DORKY GENERIC DISCLAIMER HERE                      ***
   -----------------------------------------------------------------
   Jonathan R. Lusky                   University of Texas at Austin
   lusky@ccwf.cc.utexas.edu          Society of Automotive Engineers

mark@spv.UUCP (Mark Bartelt) (01/24/91)

In article <1991Jan18.024240.14924@ncsuvx.ncsu.edu>
kirk@hobbes.catt.ncsu.edu (Kirk Krauss) writes:

> Anybody know where I can find a good C compiler (preferably ANSI)
> for the Motorola 68HC11 evaluation board (EVB) or compatible?
> I'm looking for a cross-compiler which runs on a PC or Mac and
> generates S-records for serial downloading to the EVB.

I have a recommendation for one to avoid:  Avocet's C11.  I've had the
misfortune of using it for the past couple months, and it's without a
doubt the buggiest C compiler I've ever used in my life.  Thus far I've
found nearly a dozen bugs.  About half were instances of incorrect code
being generated.  Several others were cases of the compiler rejecting
as syntactically incorrect a construct that was perfectly valid.  And
finally, there were a couple library routine bugs (though it's possible
that the compiler may have been botching the function call by passing
wrong arguments to the library routines; I haven't checked yet), and
one bug with the linker.  Oh, yeah, at least one documentation error in
the man pages as well.

A dozen bugs might not seem like much if one came across them over the
space of, say, a couple years.  But I've been using this compiler only
for a rather small project (less than 2000 lines of C code), and not
doing anything particularly obscure.  And the bugs are often in areas
so fundamental that it's hard to see how this compiler could have been
used for anything much more complex than a simulation of a $3.98 digital
watch.  For example

		x &= y;

works correctly if x and y are of type int, but generates bad code if
they're of type char.

		long x, y;
		x = y + 16L;

results in an incorrect value for the evaluated expression.

		int x;
		double y;

		y = (double)x;

assigns an incorrect value to y.  There are workarounds for all of these:

		x = x & y;
and
		long x, y, L16=16L;
		x = y + L16;
and
		y = (double)(long)x;

But still, the time spent (wasted) in tracking down the cause of one's
non-working program to yet another wretched compiler bug, and finding
a workaround, has been far more than I consider acceptable.  I don't
have a copy of my complete bug list with me at the moment, but would
be glad to send it to anyone who's really interested.

There are a couple of real howlers in their version of the C reference
manual.  For example, when discussing lvalues, they say:

   A point to note is that an expression of the form E1->memb is an
   lvalue only if E1 is an lvalue.

When I mentioned this to a friend, his instant response was "But ...
that's *horseshit*!"  Yes, indeed.  The above-quoted passage leads me
to believe that the people who wrote this compiler don't really have
an understanding of the C language.  Their product brochure claims

   Avocet C compilers are fully compatible with the new ANSI
   draft standard X3J11.

Right.

As for recommendations for *good* compilers for the 68HC11, the one
from Archimedes came highly recommended, though I haven't used it
myself so can't confirm how good it is.  Knowing what I know now,
though, I wish we'd gotten theirs; it's unlikely that it could be
as bad as the Avocet compiler.  ( Why did we choose Avocet in the
first place?  Well, it was cheaper, and the hardware guy who did
the board design reported that his colleagues had been using it
and were happy with it.  Just goes to show what happens when you
trust a hardware person's recommendation. ;-)

--

Mark Bartelt                                        SPV Technologies
mark@spv.uucp                                       Toronto, Ontario