Oberon || Library || Module Index || Search Engine || Definition || Module
TYPE Address = LONGINT; TYPE Size = LONGINT; TYPE Mode = SHORTINT; (* <0: growing backward; =0 fixed; >0 growing forward *) TYPE Segment = RECORD addr: Address; size: Size; mode: Mode; END;
PROCEDURE Register(addr: Address; size: Size; mode: Mode); PROCEDURE NumberOfSegments() : INTEGER; PROCEDURE GetSegment(segmentIndex: INTEGER; VAR segment: Segment);
A segment is given by the interval [addr, addr+size) and the growing mode which is specified by mode. Usually, there should be only one growing segment: the stack segment which is provided by the invocation environment.
Register is to be called only by the runtime start and registers the given segment.
NumberOfSegments returns the number of registered segments and GetSegment allows to retrieve the segments. Valid segment indexes range from 0 to NumberOfSegments()-1.
The current runtime start declares following segments:
Oberon || Library || Module Index || Search Engine || Definition || Module