Path: utzoo!attcan!uunet!husc6!rutgers!rochester!pt.cs.cmu.edu!andrew.cmu.edu!bader+ From: bader+@andrew.cmu.edu (Miles Bader) Newsgroups: comp.sys.amiga Subject: Re: Lattice 5.0 is out Message-ID: Date: 23 Nov 88 17:36:06 GMT References: <77037@sun.uucp>, <350@stca77.stc.oz> Organization: Carnegie Mellon Lines: 82 In-Reply-To: <350@stca77.stc.oz> peter@stca77.stc.oz (Peter Jeremy) writes: > The most obviously missing thing is an indication of hardware and software > prerequisites. Can it run on a 1meg, 2 FD system, or does it need HD and/or > more ram? (Yes, I know thats not a good development environment, but money is > a bit tight at present). Will it run under 1.2 and/or 1.3? Well, I'm running it right now on a 2floppy, 1 meg system. It works fine; I've rezzed all the passes, and use lot's of faccii buffers. I have the compiler passes, includes, & necessary libraries on [a very full] one disk. I generally have to exit the editor to compile & unrez everything to use the debugger. The biggest irritation in this setup is that they have moved the error messages to separate files, and they search the executable path to find these files. Besides being sort of ugly, they seem to search THE WHOLE PATH, even if the file is in the first directory. Because of this, I have to re-assign c: to ram or something, so it won't keep asking me to insert my workbench disk, 300 times per compile... > Another thing I would like to know, is what improvements they actually > did to the compiler, and what changes they will make to your code. Also > they didn't say how ANSIfied the new compiler is. The generated code seems a lot less stupid than 4.0. The biggest win I could see in the output is that it automatically promotes variables to register variables, and doesn't pop the stack after every function call, waiting until the last possible momement, and popping the stack for a whole bunch of function calls at once. The "global-optimizer" is not REALLY a global optimizer-- it only optimizes within a function [and it often looks like only within a basic-block, but that's just a guess based on some wierd output]. It doesn't produce perfect code, but it's pretty good. ANSI: They say that it has a full ansi preprocesser, string concatenation, supports void*, optional dummy parameter names in prototypes, const & volatile. I tested my previous gripe, that 4.0 didn't support ansi-style formal parameters, and 5.0 does indeed support them. The preprocessor now has #elif & defined(). There's some new startup files (besides c.o & cback.o): cres.o-- lets you make a "pure" program, that can be shared when resident, catch.o-- catches gurus and tries to do a stack dump to a file. There are also startups that combine the above behaviors. DEBUGGER: The debugger is REALLY NICE... It has separate windows for commands, registers, code (which can be c, asm, or interspersed c & the generated asm), and "watched" variables (which unfortunetly is only a memory dump). It can have breakpoints on both stack & data (although like dbx, data breakpoints supposedly slow down execution a lot) and single step over or into function calls. It knows about types & things, so they print out like you expect (so why don't they let you use t yped-printout for watched variables? I donoo). It basically has everything I've wanted so far (I'm used to dbx & gdb). The biggest problem with the debugger is that it can't deal with variables moved into registers by optimization, so you either have to look at the assembly code and see which register a variable is in (which isn't actually too hard, given that interspersed c & assembly on the screen), or compile with a high debugging option, and leave out the global optimizer pass. The latter will produce code that the debugger can handle well, but is not nearly as good code. I've found one bug in the debugger (the "where" command [in addition to not correctly printing the args for all the active calls] messes up some internal tables; but typing "where" again seems to fix it!?) OTHER STUFF: You get a whole bunch of utilities, lse-- a bad editor, lmk-- a make program, grep, diff, lprof & lstat -- a code profiler (yay!), cxref-- a c cross referencing program, files-- a less powerful analogue of the unix find command, touch, wc, tb-- a program that will print a stack backtrace from a file dumped by the catch.o startup file, and some other random utilities. You also get a library of the regexp routines from grep. The whole thing comes on 5 disks (4.0 came on 4 disks, did 3.0 com on 3?), with two thick three-ring binders of documentation. -Miles