CADR (was [rescue] Crays, etc._

Patrick Giagnocavo +1.717.201.3366 patrick at
Tue Apr 27 12:57:43 CDT 2004

On Tue, Apr 27, 2004 at 01:32:06PM -0400, Dave McGuire wrote:
> On Apr 27, 2004, at 1:43 PM, Patrick Giagnocavo +1.717.201.3366 wrote:
> > No, to figure out the microcode you just need a copy of the sources to
> > the Lisp compiler for that machine.  The Lisp compiler generated the
> > microcodes directly, then ran them, IIRC.
>    Umm, if I'm not misinterpreting you, then that couldn't be correctly 
> called "microcode".

Hmmm, I am partially right and partially wrong.  Some of the microcode
was custom, but some could be emitted by the compiler.  I suppose
neither of us knows for sure whether you could truly figure out all
the microcode needed just by looking at the compiler.

Have a look here:


The third form of program representation is microcode. The system
includes a good deal of hand-coded microcode which executes the
macrocode instructions, implements the data types and the
function-calling mechanism, maintains the paged virtual memory, does
storage allocation and garbage collection, and performs similar
systemic functions. The primitive operations on the basic data types,
that is, CAR and CDR for lists, arithmetic for numbers, reference and
store for arrays, etc. are implemented as microcode subroutines. In
addition, a number of commonly-used Lisp functions, for instance GET
and ASSQ, are hand-coded in microcode for speed.

In addition to this system supplied microcode, there is a feature
called micro compilation. Because of the simplicity and generality of
the CONS microprocessor, it is feasible to write a compiler to compile
user-written Lisp functions directly into microcode, eliminating the
overhead of fetching and interpreting macroinstructions. This can be
used to boost performance by microcompiling the most critical routines
of a program



More information about the rescue mailing list