LLL: Control structures and code caching

Chris Harris chharris@u.washington.edu
Fri, 16 Dec 1994 05:48:48 -0800 (PST)


Hello Folks,
      I had a few more thoughts to bring up about the LLL, so feel free 
to fire away....

      First, how are we planning to represent control structures?  Will 
our language support such primitives as if/while, or will it have only 
conditional jumps?  How low-level is our LLL anyway?

      Second, it seems to me that Tunes should be able to execute code 
larger than physical memory, perhaps 20 times larger if necesary.  (I'd 
like to put the code size limit as the size of the disks.)  This will 
require support from some not-so-standard VM techniqures.
      I suggest we support paging, but not the standard means of 
swapping.  When a Tunes page is swapped out, it is written back to the 
location on disk of the object/toolbox to which it belongs, provided it 
has been modified since it was loaded into memory.  It would also be 
possible to use an intermediate file to built up changes, and then 
replace the actual copies of the data all at once, to preserve consistancy.
      This works great for data, but leaves a bit of a problem for 
code, and getting it into the native binary format.  One option would be 
to compile the whole thing at once, and then execute this newly-compiled 
file with fairly standard techniques.  This could generate some fairly 
large files, however, that maybe shouldn't be there.  Instead, I wonder 
if it would be possible to do incrimental compiles.  The machine would 
load some LLL code, and compile it into native format.  This would then 
interrupt, and the system would compile a bit more.  Some way for code 
cachine would then be helpful, to avoid compiling redundent pieces of 
code....
      Yet another problem extends from the fact that LLL operations must 
be fairly atomic, since the instruction counter is kept on the basis of 
LLL code.  (How else might we migrate processes to different 
architectures?)  I suppose it wouldn't be too hard to let a process 
finish its current LLL instruction before it is migrated, but telling how 
much you have left to go from the PC might be sorta' difficult....

      Just s'more thoughs.  Anyone have have comments to babble about?

-Chris

"If patterns of 1s and 0s were 'like' patterns of human lives and death,
if everything about an individual could be represented in a computer by a
long string of 1s and 0s, then what kind of creature would be represented
by a long string of lives and deaths?"  --Thomas Pynchon