Like other Lisps, it is data objects that are typed, not variables.
Any variable can have any object as its value.
Although it is possible to
declare the type of object which is bound to a variable, but usually
it is only advisory information to the compiler to generate faster code.
Numbers are represented as immediate values in pointers and all the others
are represented by objects referenced by pointers.
In the implementation of Sun4, a pointer or a number is represented by
a long word as depicted in fig.2.
Two bits at LSB of a pointer are used as tag bits to discriminate
between a pointer, an integer, and a float.
Since a pointer's tags are all zero and it can use all 32 bits for
addressing an object, EusLisp can utilize up to 4GB of process
address space.
Figure 2:
Pointer and Immediate Value
|
Subsections
k-okada
2013-05-21