[comp.sys.amiga] ZC

dillon@POSTGRES.BERKELEY.EDU (Matt Dillon) (03/11/89)

	Kudos to Johann Ruegg and Joe Montgomery!  I spent the wee hours
this morning downloading all the stuff in sources/binaries amiga that has
come in over the last month and ZC caught my eye.

	ZC and A68K.  Together with, say, the gnu stdio library we *almost*
have a freely redistributable complete C compilation system.  Add a freely
distributable version of BLink (or just use ALink!) and we're all set.

	Kudos to the organization of the ZC code (I guess that goes to
Johann Ruegg) ... it took me all of 10 minutes to fix the register usage
so it only uses D0-D1/A0-A1 as scratch and uses A5 for the link register,
and does not touch A4 or A6 (though theoretically we ought to be able to use
A6 for a register var... I'll think about it).  I was even able to use the
Aztec 3.6A linker on the .o file and link with the Aztec libraries!  Except
instead of printing "hello world" it printed "llo world" ... must be a
situation in there that the aztec linker can't handle. :-)

	Since A68K supports a small-data model, no modifications to the 
compiler are required to support a small-data model (just as long as it
doesn't screw with A4, which it doesn't now).

	It also occurs to me that there is a lot of room for an assembly
optimizer as an intermediate pass... that would get rid of quite a bit of
junk. 

	And... it gives me a chance to play around with things.  For example,
using D0-D1/A0-A1 as register variables if they are otherwise unused and
no function calls are made ... that would get rid of the movem instructions,
and also to get rid of the link # instruction entirely and make A5 available
as a register variable ... requires more knowledge of where the sp is.

	Aztec only allows 2 pointer register vars and 4 data register vars
and frankly that is not acceptable...

					-Matt