home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / language / bcpl / BCPL / b / ops < prev    next >
Encoding:
Text File  |  1988-01-20  |  4.7 KB  |  214 lines

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