separate assembly

Matthew Fluet fluet@research.nj.nec.com
Fri, 11 Aug 2000 17:50:39 -0400 (EDT)


I also wanted to mention that I added separate assembly files to the
x86-codegen.  (Again, I'm really just marking where to split the file,
running it though csplit, then assemblying each individual piece.)  It is
a big win (although you have to be careful); I've got the assembler time
of a self compile down to 60 seconds (on a 200MHz PPro!) by splitting it
into about 13 files of 100000 lines of assembly.  Interestingly, doing
as -o file_s.o file_s*.s
takes as long as as on the whole file itself.  I needed to do a for loop
and assemble each file separately, then incrementally link them all
together.

This causes one minor problem.  Originally, I had only made the labels for
gcReturns and entries global (since those are what might appear on the
stack, so they need to be global in order to resolve with their
counterparts in the C-stub file that sets up the frame layouts), and
everything else local.  However, with separate files, I needed to make all
labels global so that they resolve at link time.  That seems kind of bad,
since now there are tons of labels in the namespace, but I haven't seen
any clashes with libraries yet.  I don't want to have to do some sort of
connected component analysis in order to output groups with no unresolved
references.  Ideally, I'd like to make everything global, do the assembly
and the incremental link, then patch that object file so that only
gcReturns and entries are global, and everything else is local.