<<>> <> <> <> <> <> Table: DEFINITIONS = { Base: TYPE = LONG ORDERED BASE POINTER; Finger: TYPE = LONG POINTER TO Base; Index: TYPE = Base RELATIVE LONG POINTER; OrderedIndex: TYPE = Base RELATIVE LONG ORDERED POINTER; <> Tag: TYPE = BYTE; HighBits: TYPE = BYTE; LowBits: TYPE = CARD16; tagBitLo: NAT = IF BITS[WORD] = 16 THEN 16 ELSE 0; tagBitHi: NAT = tagBitLo+BITS[Tag]-1; restBitLo: NAT = tagBitHi+1; restBitHi: NAT = restBitLo+BITS[HighBits]-1; lowBitLo: NAT = IF BITS[WORD] = 16 THEN 0 ELSE 16; lowBitHi: NAT = lowBitLo+BITS[LowBits]-1; IndexRep: TYPE = MACHINE DEPENDENT RECORD [ tag (0: tagBitLo..tagBitHi): Tag ¬ 0, highBits (0: restBitLo..restBitHi): HighBits ¬ HighBits.LAST, lowBits (0: lowBitLo..lowBitHi): LowBits ¬ LowBits.LAST]; IPointer: TYPE = LONG POINTER; Selector: TYPE = NAT; chunkType: Selector = Selector.FIRST; }.