HN2new | past | comments | ask | show | jobs | submitlogin

>> (which executed Lisp directly)

Uh, the machine's architectures were probably designed to be more amenable to Lisp-esque features (e.g., garbage collection, tagged types at runtime, native pair operations, etc); I suspect the machines didn't execute Lisp directly for the same reason that an x86 doesn't execute C directly...



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.


That'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.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.


Well, 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.


Keep in mind that "car" and "cdr" were opcodes stolen from processors that existed way before lisp machine :)


Well, evidently the processors worked with binary instructions, but these were based on primitive Lisp operations. There's more information in http://hdl.handle.net/1721.1/5731 and quoting from the wikipedia http://en.wikipedia.org/wiki/Lisp_machine

  These machines had hardware support for various primitive
  Lisp operations (data type testing, CDR coding) and also
  hardware support for incremental garbage collection. They
  ran large Lisp programs very efficiently.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: