
Lisp System Implementation - nils-m-holm
http://www.t3x.org/lsi/index.html
======
kerkeslager
If you're interested in this, Lisp In Small Pieces is also a good resource.

------
shaunxcode
Everything this guy writes or works on is worth consuming. Looking forward to
reading this!

~~~
pvitz
I totally agree with you. I bought his book on writing a compiler (t3x
language) and although the code and text could be more educationally
structured, it certainly conveys how easy it can be to implement a simple
compiler.

------
macoovacany
The free pdf preview seems to consolidate some of the concepts from the
register machine chapters of SICP.

------
new4thaccount
This author is a treasure. I've been planning on reading his book on Klong
(array language like J, K, and APL) for awhile now.

I absolutely love the minimalist website design which reminds me of Zork and
old terminals.

------
Annatar
Started reading the sample text but as soon as I read _abstract machine_ it
was all over: we have suffered far too much and far too long under
inefficiencies and distribution nightmares of abstract machines like that of
Java, .NET or Python: if I cannot compile it straight to a machine code
executable, I want nothing to do with it. Intermediate representation: just
say no.

~~~
nils-m-holm
There are some well though-out abstract machines out there that are quite
efficient and map pretty directly to machine code, like the SECD or the WAM
(for PROLOG).

The LISP9 Abstract Machine, which is described in the book, is very close to
the metal. So much so that you might as well emit machine code instead. The
approach is outlined (but not described in detail, as you noted) in the last
chapter.

Then abstract machines have one huge advantage and that is portability. I can
just compile the system on x86, ARM, SPARC, MIPS, Alpha, or whatever and it
will simply run. So whatever the reader has, the code will work. (I
acknowledge that pretty much everybody uses x86 today, but still...)

~~~
SomeHacker44
Counting general purpose CPUs only, I have so many in my house it isn't even
funny. 6502, Z80, MIPS (64-bit), Alpha, SPARC, Ivory, 680x0, x86(_64), ARM
(32/64), PowerPC and a lot of variants, and some I do not even know offhand
(Xerox, TI). I am actually ashamed to have no RS/6000, PA-RISC or Itanium to
go with it.

So... Thank the world for IR, ByteCodes and VMs.

~~~
Annatar
What does owning all these processors have to do with bytecodes and VM's? What
kind of a statement is that?

~~~
new4thaccount
I assume he means that the intermediate code allows for easier abstractions to
support all those different processors instead of writing a specific machine
code compiler for each one.

