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 /|\ /|\ /