Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!tut.cis.ohio-state.edu!DG-RTP.DG.COM!meissner From: meissner@DG-RTP.DG.COM (Michael Meissner) Newsgroups: gnu.gcc Subject: Re: What CPU's supported Message-ID: <8906100311.AA19682@tiktok.dg.com> Date: 10 Jun 89 03:11:10 GMT References: <8216@killer.DALLAS.TX.US> <16049@paris.ics.uci.edu> <4622@psuvax1.cs.psu.edu> <18930@cup.portal.com> Sender: daemon@tut.cis.ohio-state.edu Reply-To: Michael Meissner Distribution: gnu Organization: Data General (Languages @ Research Triangle Park, NC.) Lines: 41 In article <18930@cup.portal.com> dsmythe@cup.portal.com (dave l smythe) writes: | What about the DG Eclipse? Oh boy, a subject for which I'm qualified to digress on. I'm one of the few people (I believe) that has actually worked on compilers for the DG computers as well as GCC (for the 88000). I'm not aware of any ports to either the Eclipse (16 bit) or the MV/Eclipse (32 bit). In my opinion, this would be painful, for the following reasons: If you really meant Eclipse as opposed to MV/Eclipse, GCC has a definite 32-bit bias in it. The compiler itself would never fit in a 16 bit address space, IMHO. The Nova, Eclipse, and MV/Eclipse is one of those 'fun' word based machines, which have different pointer formats for pointers to bytes and pointers to words. GCC internally believe there is only one true pointer format. This can be gotten around by always using byte pointers on the DG side, and doing the conversion before dereferncing it. Another 'fun' ascpect to the traditional DG computers is that it only has four registers, and only two of the registers can used to dereference word pointers. You could concievably write the appropriate macros in the machine dependent portion of GCC, but I suspect some of GCC's algorithms for register allocation and spilling might be inappropriate for so few registers. Another gotcha is that the stack pointer, frame pointer, et. al don't normally reside in fixed registers. Finally, the traditional DG/CLRE calling sequence for the Eclipse (but not the MV/Eclipse) pushes a pointer to hold the return value if the function returns a value, but does not push that pointer argument for void functions. You would have to make sure that all void functions are declared as such in the scope of any calls, or not use the DG/CLRE calling sequence (which is what I recomend). However, if you have plenty of time on your hands, go to it. -- Michael Meissner, Data General. Uucp: ...!mcnc!rti!xyzzy!meissner If compiles were much Internet: meissner@dg-rtp.DG.COM faster, when would we Old Internet: meissner%dg-rtp.DG.COM@relay.cs.net have time for netnews?