4 ms·
The microarchitecture really implemented Lisp primitives like cons, car, cdr, array ref as opcodes, etc. That's about as close to executing Lisp directly as you
by cpr 18y ago
The microarchitecture really implemented Lisp primitives like cons, car, cdr, array ref as opcodes, etc. That's about as close to executing Lisp directly as you can get.
- ajross 18y agoThat's how it's commonly explained, but it's not really correct. The bitsavers.org folks have a copy of the original Lisp Machine paper: http://www.bitsavers.org/pdf/mit/cons/TheLispMachine_Nov74.pdf http://www.bitsavers.org/pdf/mit/cons/TheLispMachine_Nov74.p... The pointer/register format was very LISP-friendly, but the actual instructions are much more conventional. The trick is that instead of having to test the tag bits with separate instructions, the "load" instruction equivalent does it in hardware.
- cpr 18y agoWell, if you look on pages 13-14 of the manual you referenced, you'll find instruction codes for PCAR, PCDR, SCDR, SCDDR, NCONS, CONS, LIST (alloc), CxxxR, CxxxXR, GET, GETL, ASSQ, ASSOC, etc. Seems like Lisp primitive instructions to me.
- jrockway 18y agoKeep in mind that "car" and "cdr" were opcodes stolen from processors that existed way before lisp machine :)