[comp.os.minix] GNU cc, etc.

dana@seas.ucla.edu (08/15/89)

  Though I haven't looked at it myself yet, an associate of mine recently
compiled gcc, once with another compiler, another time with gcc (the
self-compiling bootstrap). He sez gcc doesn't use temporary files. It uses
gobs of virtual memory.

  Keep this in mind - a 386 Minix supporting this compiler will have to
provide useful virtual memory.

Dana H. Myers			| "These are experimental tires from
Locus Computing Corp.		|  Sandoz labs. I could run them up to
Inglewood, CA			|  a hundred PSI"
lcc.dana@seas.ucla.edu

Leisner.Henr@xerox.com (marty) (08/15/89)

Virtual memory is kind of a necessity for gcc.

Gcc reads in a file, converts to an internal representation of the C module
(rtl -- register transfer language) and then munges on this in-core RTL
representation before generating assembler code at the end.  Big files
require significant virtual memory -- virtual memory is kinda implied for
the GNU system.  
[BTW -- I agree with the methodology -- don't handicap the programmers due
to hardware limitations.  Virtual memory is now over 25 years old].

Minix current memory manager granularity is process sized, where the
process size is defined in the a.out header.  For something like gcc, it
would be useful to grow the data segment and the stack segment on demand
(i.e via stack faults and brk()), and reduce the granularity.  On simpler
machines, the pages would be sequential and the text, data and stack would
be contiguous.  On machines which have page tables, the pages could be
located anywhere in disk or core.

ast elected to leave out virtual memory (sorta an "exercise for the
reader"?).
I feel it would be most useful to put machine  dependent files in the
memory manager to support page-level virtual memory.  For simpler machines,
the files wouldn't do anything except preserve an architecture [this is in
lieu of ifdefs].

I would like to see virtual memory added to Minix -- I really am not sure
how the pieces would work.



marty
ARPA:	leisner.henr@xerox.com
GV:  leisner.henr
NS:  leisner:wbst139:xerox
UUCP:  hplabs!arisia!leisner

paula@bcsaic.UUCP (Paul Allen) (08/17/89)

In article <21712@louie.udel.EDU> lcc!dana@seas.ucla.edu writes:
+
+  Though I haven't looked at it myself yet, an associate of mine recently
+compiled gcc, once with another compiler, another time with gcc (the
+self-compiling bootstrap). He sez gcc doesn't use temporary files. It uses
+gobs of virtual memory.
+
+  Keep this in mind - a 386 Minix supporting this compiler will have to
+provide useful virtual memory.

A long time ago, I recompiled gcc with itself on a Sun while watching
the size of the processes with the top program.  As I recall, the cc1
process grew to just under a megabyte.  Assuming the existence of a
version of Minix that could support processes that big, I think you
could get by with just a couple megabytes of extended memory.  Of course, 
getting past that initial assumption is non-trivial!

Paul Allen

-- 
------------------------------------------------------------------------
Paul L. Allen                       | pallen@atc.boeing.com
Boeing Advanced Technology Center   | ...!uw-beaver!bcsaic!pallen