home *** CD-ROM | disk | FTP | other *** search
- MANIFEST $(
- // Size of a block of heap storage
- heap.block.size = 200
-
- // Structure of a heap mark
- mk.vector = 0; mk.block = 1; mk.ptr = 2; mk.used = 3
- mk.size = 4
-
- // storage management
- StoreBlockSize = 64; // (words)
- StoreBlockShift = 8;
- StoreBlockMask = 255;
- StoreBlockVSize = 256;
-
- free.max = 10;
-
- // ocode buffer layout
- oc.next = 0; oc.lastbyte = 1;
- oc.firstbyte = 2*BytesPerWord;
- oc.size = 100;
- oc.bytes = oc.size*BytesPerWord $)
-
- MANIFEST $(
- // Selectors
- h1=0; h2=1; h3=2; h4=3; h5=4; h6=5 $)
-
- MANIFEST $(
- // AE tree operators
- s.number = 1; s.name = 2; s.string = 3
- s.valof = 6
- s.lv = 7
- s.vecap = 9; s.byteap = 28
- s.cond = 37
- s.comma = 38
- s.table = 39
- s.and = 40
- s.valdef = 41; s.vecdef = 42
- s.commalist = 43
- s.fndef = 44; s.rtdef = 45
- s.opab = 46
- s.ass = 50
- s.resultis = 53
- s.colon = 54
- s.test = 55
- s.for = 56
- s.if = 57; s.unless = 58
- s.while = 59; s.until = 60
- s.repeat = 61; s.repeatwhile = 62; s.repeatuntil = 63
- s.loop = 65; s.break = 66; s.endcase = 69
- s.case = 71; s.default = 72
- s.semicolonlist = 73
- s.let = 74
- s.manifest = 75; s.static = 79; s.external = 80
- s.of = 81
- s.slct = 82
- s.bad = 83
- s.semicolon = 97
-
- // AE tree and OCODE operators
-
- s.true = 4; s.false = 5;
- s.rv = 8;
- s.fnap = 10;
- s.mult = 11; s.div = 12; s.rem = 13;
- s.plus = 14; s.minus = 15;
- s.query = 16;
- s.neg = 17; s.abs = 19;
- s.eq = 20; s.ne = 21;
- s.ls = 22; s.gr = 23; s.le = 24; s.ge = 25;
- s.lls = 122; s.lgr = 123; s.lle = 124; s.lge = 125;
- s.not = 30;
- s.lshift = 31; s.rshift = 32;
- s.logand = 33; s.logor = 34; s.eqv = 35; s.neqv = 36;
- s.needs = 48; s.section = 49;
- s.rtap = 51;
- s.goto = 52;
- s.return = 67; s.finish = 68;
- s.switchon = 70;
- s.global = 76;
- s.nil = 99;
-
- s.fadd = 128;
- s.fconst = 136;
- s.fix = 137; s.float = 138;
- s.fmult = 139; s.fdiv = 140;
- s.fplus = 142; s.fminus = 143;
- s.fneg = 145; s.fabs = 147;
- s.feq = 148; s.fne = 149;
- s.fls = 150; s.fgr = 151; s.fle = 152; s.fge = 153;
-
- // OCODE operators
-
- s.lp = 40; s.lg = 41; s.ln = 42; s.lstr = 43; s.ll = 44;
- s.llp = 45; s.llg = 46; s.lll = 47;
- s.local = 77; s.label = 78;
- s.sp = 80; s.sg = 81; s.sl = 82;
- s.stind = 83;
- s.jump = 85; s.jt = 86; s.jf = 87;
- s.endfor = 88; s.endblock = 89;
- s.lab = 90;
- s.stack = 91; s.store = 92; s.rstack = 93;
- s.entry = 94;
- s.save = 95;
- s.fnrn = 96; s.rtrn = 97;
- s.res = 98;
- s.datalab = 100; s.iteml = 101; s.itemn = 102;
- s.endproc = 103;
- s.dstr = 104; s.dtab = 105;
- s.stnil = 84;
- s.slctap = 106; s.slctst = 107;
- s.car = 108; s.cdr = 109; s.vcar = 110; s.vcdr = 111;
- s.stcar = 112; s.stcdr = 113; s.stvcar = 114; s.stvcdr = 115;
- s.linecount = 116;
- s.mod = 117; s.modslct = 119;
- s.getbyte = 120; s.putbyte = 121;
- s.debug = 118;
- s.refext = 38; s.defext = 39;
- s.argno = 126
-
- // Basic symbols (not used in TRN):
-
- s.be = 89
- s.end = 90
- s.lsect = 91; s.rsect = 92
- s.get = 93
- s.into = 98
- s.to = 99
- s.by = 100
- s.do = 101
- s.or = 102
- s.vec = 103
- s.lparen = 105; s.rparen = 106
- s.tagname = 107 $)
-
- MANIFEST $(
- rootg = ug; // 150
- synrg = rootg+80 // 230
- trnrg = synrg+10 // 240
- syntrng = trnrg+20 // 260
-
- syng = syntrng+40 // 300
- trng = syng+30 // 330
-
- cgv = trng+40 // 370
- $)
-
- // Globals shared between all phases of the compiler
-
- GLOBAL $(
- rc: rootg+0
- headers: rootg+1
- verStream: rootg+2; ocodeStream: rootg+3;
- listStream: rootg+5; moduleStream: rootg+6;
- err.p: rootg+8; err.l: rootg+9
- ocodeFile: rootg+10
- fromFile: rootg+12
- tagChain: rootg+13
- programSize: rootg+14
-
- Complain: rootg+15; Abandon: rootg+16
-
- streams: rootg+17
- Open: rootg+18; Close: rootg+19
-
- workVectors: rootg+20
- heap.block: rootg+21; heapptr: rootg+22
- space.used: rootg+23
- MarkHeap: rootg+24; ResetHeap: rootg+25
- GetVector: rootg+26; GetWithMark: rootg+27;
- FreeVector: rootg+28
- GetBlk: rootg+29; FillBlk: rootg+30;
- FreeBlk: rootg+31;
- LookUpTag: rootg+32;
-
- primal.mark: rootg+33
- ocode.mark: rootg+34
-
- bcpl.args: rootg+35
- bcpl.syn: rootg+36
- bcpl.trn: rootg+37
- bcpl.ptree: rootg+38
- bcpl.cg: rootg+39
-
- freeLists: rootg+40;
-
- // Compiler and CG options
-
- stampFiles: rootg+45;
- restrictedLanguage: rootg+46
- saveSpaceSize: rootg+47
- equateCases: rootg+48
- backwardVecs: rootg+49;
-
- // OCODE retention data
- retainOcode: rootg+51;
- ocodeBufs: rootg+52; ocodeBuf: rootg+54;
-
- // CG options
-
- cg: rootg+55
- procNames: rootg+56
- callCounting: rootg+57
- counting: rootg+58
- stkchking: rootg+59
- rbInCalls: rootg+60;
- compactCode: rootg+61;
- AOFout: rootg+62;
- CGOptMode: rootg+63;
- CGDebugMode: rootg+64;
- naming: rootg+65 $)
-
- GLOBAL $(
- Out1: trnrg+15 $)
-