[net.lang.lisp] Scientific Programming and Immediate Values

mct@gandalf.cs.cmu.edu (Mark Tucker) (10/22/85)

Most lisps implement integers as immedate data.
Roughly, a Lisp value is a 32bit quantity. The top 8 bits are a tag
describing how to interpret the low 24.  If the tag says CONS, then the low
24 point to a 64 bit hunk of storage that is a cons cell.  If the tag says
SMALL-INTEGER, then the low 24 bits @u<are the integer itself.>

Incrementing such a small integer just twiddles the bits of the 32-bit Lisp
value that you've got in your hand.  It doesn't mess with the heap unless
the SMALL-INTEGER overflows into a BIGNUM.

-- Mark Tucker