Memory model for the LLL

Francois-Rene Rideau rideau@clipper
Thu, 8 Dec 94 18:46:58 MET


What will be our memory model for the LLL ?
For instance, will we allow pointer arithmetics ? (I hope not)
Will we allow infix pointers (not pointing to the beginning of an
object) ?
What will be our integer and pointer size(s) ?
How will we adapt to different architectures ?
Will 8-bit, 16-bit have to use 32-bit words anyway ?
Will 64-bit architectures have to throw away 32 bits out of 64 ?
Will 20-bit architectures have to throw 8 bit out of 40 ?
etc, etc...

This is a very important issue.

Implementation ideas:
* Any implementation would use native pointers as values,
with lower or higher bit(s) to indicate the value being pointer
or integer, thus losing one bit. For ;ore portability, integers
would come with size 8, 16, 32, or 64, even though the architecture
be 20 bit.
* Pointers would never be infix (except in transient state);
* GC would happen only during cooperative multithreading, while
preemptive multithreading is allowed for real-time behavior on
preallocated (outside global GC) zones.
* objects with size different than pointer size are allocated on
heap.
* object type is determined by which page it is located on and/or
which tag precedes it.
* low-level operators like addition are explicitly typed, and won't
have to test object type.

--    ,        	                                ,           _ v    ~  ^  --
-- Fare -- rideau@clipper.ens.fr -- Francois-Rene Rideau -- +)ang-Vu Ban --
--                                      '                   / .          --
MOOSE project member. OSL developper.                     |   |   /
Dreams about The Universal (Distributed) Database.       --- --- //
Snail mail: 6, rue Augustin Thierry 75019 PARIS FRANCE   /|\ /|\ //
Phone: 033 1 42026735                                    /|\ /|\ /