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