DIRECTORY Alloc USING [Base, Notifier], IntCodeDefs USING [Label, Node, NodeList], SourceMap USING [Loc], Symbols USING [ContextLevel, CTXIndex, HTIndex, ISEIndex, RecordSEIndex, Type, UNSPEC], Target: TYPE MachineParms USING [bitsPerWord]; MimCode: DEFINITIONS = BEGIN OPEN IntCodeDefs, Symbols, Target; Info: TYPE = Symbols.UNSPEC; BitAddress: TYPE = INT; BitCount: TYPE = INT; BitIndex: TYPE = [0..bitsPerWord); firstMappedAddress: CARD = 8*1024; Base: TYPE = Alloc.Base; z: ZONE; CodeList: TYPE = REF CodeListRep; CodeListRep: TYPE = RECORD [head, tail: IntCodeDefs.NodeList ¬ NIL]; VLoc: TYPE = RECORD [disp: INT, size: BitCount]; LabelInfo: TYPE = REF LabelInfoRecord; labelInfoNull: LabelInfo = NIL; LabelInfoRecord: TYPE = RECORD [ free: BOOL ¬ FALSE, thread: LabelInfo, catchLevel: [0..37777b], body: SELECT tag: * FROM named => [hti: HTIndex, cci: IntCodeDefs.Label], loop => [exit, loop: IntCodeDefs.Label], stmt => [retry, continue: IntCodeDefs.Label] ENDCASE]; NamedLabelInfo: TYPE = REF LabelInfoRecord.named; StoreOptions: TYPE = MACHINE DEPENDENT RECORD [ expr: BOOL ¬ FALSE, init: BOOL ¬ FALSE, counted: BOOL ¬ FALSE, skipZeros: BOOL ¬ FALSE]; ConsDestination: TYPE = RECORD [ cl: CodeList ¬ NIL, destNode: IntCodeDefs.Node ¬ NIL, ignoreSafen: BOOL ¬ FALSE, options: StoreOptions ¬ []]; RegisterNotifier: PROC [notifier: Alloc.Notifier]; curctxlvl: Symbols.ContextLevel; bodyRetLabel, bodyComRetLabel: Label; bodyInRecord, bodyOutRecord: Symbols.RecordSEIndex; mainBody: BOOL; tailJumpOK: BOOL; caseCV: Node; caseType: Type; fileLoc, inlineFileLoc: SourceMap.Loc; catchcount: CARDINAL; catchoutrecord: Symbols.RecordSEIndex; tempcontext: Symbols.CTXIndex; xtracting: BOOL; xtractNode: Node; xtractsei: Symbols.ISEIndex; nC0, nC1: Node; trueNode, falseNode: Node; CodeNotImplemented: SIGNAL; CodePassInconsistency: SIGNAL; END.  MimCode.mesa Copyright Σ 1985, 1986, 1987, 1988, 1991 by Xerox Corporation. All rights reserved. Sweet, May 31, 1986 4:27:24 pm PDT Satterthwaite, October 10, 1985 1:50:49 pm PDT Russ Atkinson (RRA) August 18, 1988 10:10:30 pm PDT Most of this stuff is exported by MimDriver. Target data bit lengths Needs to be better parameterized The zone used during code generation (exported by MimDriver) Note: disp < 0 is legal the following variables are shared among the code generation modules constants for 0 & 1 constants for TRUE & FALSE Κf•NewlineDelimiter –(cedarcode) style™codešœ ™ Kšœ ΟeœI™TKšΟy"™"Kšž.™.K™3—˜šΟk ˜ KšœŸœ˜Kšœ Ÿœ˜*Kšœ Ÿœ˜KšœŸœBŸœ˜WKšœŸœŸœ˜.K˜——headšΟnœŸ ˜KšœŸœŸœ˜*K˜K™,K˜KšœŸœ Ÿœ˜K˜—šœ™K˜Kšœ ŸœŸœ˜Kšœ ŸœŸœ˜Kšœ Ÿœ˜"K˜šœŸœ ˜"K™ —K˜KšœŸœ˜K˜šœŸœ˜Kšœ<™<—K˜Kšœ ŸœŸœ ˜!Kšœ ŸœŸœ%Ÿœ˜DK˜šœŸœŸœŸœ˜0Kšœ™K˜—šœ ŸœŸœ˜&KšœŸœ˜—šœŸœŸœ˜ KšœŸœŸœ˜Kšœ˜K˜šœŸœŸ˜K˜0K˜(K˜,KšŸœ˜ ——KšœŸœŸœ˜1K˜š œŸœŸœŸ œŸœ˜/KšœŸœŸœ˜KšœŸœŸœ˜Kšœ ŸœŸœ˜Kšœ ŸœŸœ˜K˜—šœŸœŸœ˜ KšœŸœ˜KšœŸœ˜!Kšœ ŸœŸœ˜K˜K˜—Kš œŸœ˜2K˜KšœD™D˜K˜ K˜%K˜3Kšœ Ÿœ˜Kšœ Ÿœ˜K˜ K˜Kšœ&˜&Kšœ Ÿœ˜K˜&K˜Kšœ Ÿœ˜K˜K˜K˜šœ˜Kšœ™—˜KšœŸœŸ™—K˜KšœŸœ˜KšœŸœ˜K˜KšŸœ˜K˜K˜———…—J Ξ