(no title)
amszmidt | 5 months ago
programs.
] Pointer Fields Now 25 Bits; Flag Bit Gone.
Each typed data word in Lisp machine memory used to have one bit called the "flag bit" which was not considered part of the contents of the word. This is no longer so. There is no longer a flag bit; instead, the pointer field
of the word is one bit larger, making it 25 bits in all. This extra bit extends the range of integers that can be represented without allocation of storage, and also extends the precision of small-floats by one bit.
On the Lambda processor, the maximum size of virtual memory is doubled. This is the primary reason for the change. Unfortunately, the CADR mapping hardware is not able to use the extra bit as an address bit, so the maximum virtual memory size on a CADR is unchanged.
The functions %24-BIT-PLUS, %24-BIT-DIFFERENCE and %24-BIT-TIMES still produce only 24 bits of result. If you wish to have a result the full size of the pointer field, however wide that is, you should use the functions %POINTER-DIFFERENCE and %POINTER-TIMES (the last is new), and %MAKE-POINTER-OFFSET with a first argument of DTP-FIX to do addition.
The functions %FLOAT-DOUBLE, %DIVIDE-DOUBLE, %REMAINDER-DOUBLE and %MULTIPLY-FRACTIONS use the full width of the pointer field.
The values returned by SXHASH have not changed! They are always positive
fixnums less than 2*23.
No comments yet.