Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!lll-crg!nike!oliveb!hplabs!ucbvax!CORY!dillon From: dillon@CORY (Matt Dillon) Newsgroups: net.micro.amiga Subject: Re: C compiler comparison Message-ID: <8610071955.AA15436@cory.Berkeley.EDU> Date: Tue, 7-Oct-86 15:55:45 EDT Article-I.D.: cory.8610071955.AA15436 Posted: Tue Oct 7 15:55:45 1986 Date-Received: Wed, 8-Oct-86 08:17:38 EDT Sender: daemon@ucbvax.BERKELEY.EDU Organization: University of California at Berkeley Lines: 37 >Phil Staub writes >I use the Manx compiler with the +l option almost exclusively, and typically >find that (at least on some of the code supplied on the Fish disks) I still >only wind up with about half the amount of code as the Lattice version. I >suspect this is due to the library problems you mentioned. I normally find >only minimal code size increase from 16 to 32 bit ints. This is exclusively due to Lattice's current LC.LIB. However, from people who've compiled my shell w/ Manx, the code *is* smaller, but only by about 10-20%. >> Talking to Jay Denebeim (sysop for the BBS w/carries Blink), Lattice's >>3.04 compiler will have PC relative addressing modes for calls and jumps, and >>relative addressing through an address register for static/global variables. >>He pointed out that this would mean that I could make my shell and any other >>program re-entrant without any problem. This will also, incidently, probably >>make the code more compact than Manx as Lattice already has some great >>optimization hacks in the compiler. >> > >Manx 3.20a already uses these optimizations if small code and data models >are used (the default). I used Lattice on an IBM system... couldn't stand the FOUR memory models. But on an 8086/8 you don't have much choice since the registers aren't 32 bits and you have that idiotic segmentation scheme. One of the reasons C on the 680x0 is *so* much better is that you don't really have to worry about code size. The pointer problem that occured with 8086/8 doesn't exist. The 68000 and 68010 do, however, limit the address space for PC relative operations. Does MANX's flag for PC-RELATIVE addressing on absolute calls require that the code be smaller than 32K? Or will it employ some sort of relative jump table for calls beyond the addressing range? -Matt