1*46439007SCharles.ForsythDis: module 2*46439007SCharles.Forsyth{ 3*46439007SCharles.Forsyth PATH: con "/dis/lib/dis.dis"; 4*46439007SCharles.Forsyth 5*46439007SCharles.Forsyth XMAGIC: con 819248; 6*46439007SCharles.Forsyth SMAGIC: con 923426; 7*46439007SCharles.Forsyth MUSTCOMPILE: con 1<<0; 8*46439007SCharles.Forsyth DONTCOMPILE: con 1<<1; 9*46439007SCharles.Forsyth SHAREMP: con 1<<2; 10*46439007SCharles.Forsyth DYNMOD: con 1<<3; 11*46439007SCharles.Forsyth HASLDT0: con 1<<4; 12*46439007SCharles.Forsyth HASEXCEPT: con 1<<5; 13*46439007SCharles.Forsyth HASLDT: con 1<<6; 14*46439007SCharles.Forsyth 15*46439007SCharles.Forsyth AMP: con 16r00; # Src/Dst op addressing 16*46439007SCharles.Forsyth AFP: con 16r01; 17*46439007SCharles.Forsyth AIMM: con 16r02; 18*46439007SCharles.Forsyth AXXX: con 16r03; 19*46439007SCharles.Forsyth AIND: con 16r04; 20*46439007SCharles.Forsyth AMASK: con 16r07; 21*46439007SCharles.Forsyth 22*46439007SCharles.Forsyth ARM: con 16rC0; # Middle op addressing 23*46439007SCharles.Forsyth AXNON: con 16r00; 24*46439007SCharles.Forsyth AXIMM: con 16r40; 25*46439007SCharles.Forsyth AXINF: con 16r80; 26*46439007SCharles.Forsyth AXINM: con 16rC0; 27*46439007SCharles.Forsyth 28*46439007SCharles.Forsyth DEFZ: con 0; 29*46439007SCharles.Forsyth DEFB: con 1; # Byte 30*46439007SCharles.Forsyth DEFW: con 2; # Word 31*46439007SCharles.Forsyth DEFS: con 3; # Utf-string 32*46439007SCharles.Forsyth DEFF: con 4; # Real value 33*46439007SCharles.Forsyth DEFA: con 5; # Array 34*46439007SCharles.Forsyth DIND: con 6; # Set index 35*46439007SCharles.Forsyth DAPOP: con 7; # Restore address register 36*46439007SCharles.Forsyth DEFL: con 8; # BIG 37*46439007SCharles.Forsyth DMAX: con 1<<4; 38*46439007SCharles.Forsyth 39*46439007SCharles.Forsyth Inst: adt 40*46439007SCharles.Forsyth { 41*46439007SCharles.Forsyth op: int; 42*46439007SCharles.Forsyth addr: int; 43*46439007SCharles.Forsyth mid: int; 44*46439007SCharles.Forsyth src: int; 45*46439007SCharles.Forsyth dst: int; 46*46439007SCharles.Forsyth }; 47*46439007SCharles.Forsyth 48*46439007SCharles.Forsyth Type: adt 49*46439007SCharles.Forsyth { 50*46439007SCharles.Forsyth size: int; 51*46439007SCharles.Forsyth np: int; 52*46439007SCharles.Forsyth map: array of byte; 53*46439007SCharles.Forsyth }; 54*46439007SCharles.Forsyth 55*46439007SCharles.Forsyth Data: adt 56*46439007SCharles.Forsyth { 57*46439007SCharles.Forsyth op: int; # encoded op 58*46439007SCharles.Forsyth n: int; # number of elements 59*46439007SCharles.Forsyth off: int; # byte offset in data space 60*46439007SCharles.Forsyth pick { 61*46439007SCharles.Forsyth Zero => # DEFZ 62*46439007SCharles.Forsyth Bytes => # DEFB 63*46439007SCharles.Forsyth bytes: array of byte; 64*46439007SCharles.Forsyth Words => # DEFW 65*46439007SCharles.Forsyth words: array of int; 66*46439007SCharles.Forsyth String => # DEFS 67*46439007SCharles.Forsyth str: string; 68*46439007SCharles.Forsyth Reals => # DEFF 69*46439007SCharles.Forsyth reals: array of real; 70*46439007SCharles.Forsyth Array => # DEFA 71*46439007SCharles.Forsyth typex: int; 72*46439007SCharles.Forsyth length: int; 73*46439007SCharles.Forsyth Aindex => # DIND 74*46439007SCharles.Forsyth index: int; 75*46439007SCharles.Forsyth Arestore => # DAPOP 76*46439007SCharles.Forsyth Bigs => # DEFL 77*46439007SCharles.Forsyth bigs: array of big; 78*46439007SCharles.Forsyth } 79*46439007SCharles.Forsyth }; 80*46439007SCharles.Forsyth 81*46439007SCharles.Forsyth Link: adt 82*46439007SCharles.Forsyth { 83*46439007SCharles.Forsyth pc: int; 84*46439007SCharles.Forsyth desc: int; 85*46439007SCharles.Forsyth sig: int; 86*46439007SCharles.Forsyth name: string; 87*46439007SCharles.Forsyth }; 88*46439007SCharles.Forsyth 89*46439007SCharles.Forsyth Import: adt 90*46439007SCharles.Forsyth { 91*46439007SCharles.Forsyth sig: int; 92*46439007SCharles.Forsyth name: string; 93*46439007SCharles.Forsyth }; 94*46439007SCharles.Forsyth 95*46439007SCharles.Forsyth Except: adt 96*46439007SCharles.Forsyth { 97*46439007SCharles.Forsyth s: string; 98*46439007SCharles.Forsyth pc: int; 99*46439007SCharles.Forsyth }; 100*46439007SCharles.Forsyth 101*46439007SCharles.Forsyth Handler: adt 102*46439007SCharles.Forsyth { 103*46439007SCharles.Forsyth pc1: int; 104*46439007SCharles.Forsyth pc2: int; 105*46439007SCharles.Forsyth eoff: int; 106*46439007SCharles.Forsyth ne: int; 107*46439007SCharles.Forsyth t: ref Type; 108*46439007SCharles.Forsyth etab: array of ref Except; 109*46439007SCharles.Forsyth }; 110*46439007SCharles.Forsyth 111*46439007SCharles.Forsyth Mod: adt 112*46439007SCharles.Forsyth { 113*46439007SCharles.Forsyth name: string; 114*46439007SCharles.Forsyth srcpath: string; 115*46439007SCharles.Forsyth 116*46439007SCharles.Forsyth magic: int; 117*46439007SCharles.Forsyth rt: int; 118*46439007SCharles.Forsyth ssize: int; 119*46439007SCharles.Forsyth isize: int; 120*46439007SCharles.Forsyth dsize: int; 121*46439007SCharles.Forsyth tsize: int; 122*46439007SCharles.Forsyth lsize: int; 123*46439007SCharles.Forsyth entry: int; 124*46439007SCharles.Forsyth entryt: int; 125*46439007SCharles.Forsyth 126*46439007SCharles.Forsyth inst: array of ref Inst; 127*46439007SCharles.Forsyth types: array of ref Type; 128*46439007SCharles.Forsyth data: list of ref Data; 129*46439007SCharles.Forsyth links: array of ref Link; 130*46439007SCharles.Forsyth imports: array of array of ref Import; 131*46439007SCharles.Forsyth handlers: array of ref Handler; 132*46439007SCharles.Forsyth 133*46439007SCharles.Forsyth sign: array of byte; 134*46439007SCharles.Forsyth }; 135*46439007SCharles.Forsyth 136*46439007SCharles.Forsyth INOP, 137*46439007SCharles.Forsyth IALT, 138*46439007SCharles.Forsyth INBALT, 139*46439007SCharles.Forsyth IGOTO, 140*46439007SCharles.Forsyth ICALL, 141*46439007SCharles.Forsyth IFRAME, 142*46439007SCharles.Forsyth ISPAWN, 143*46439007SCharles.Forsyth IRUNT, 144*46439007SCharles.Forsyth ILOAD, 145*46439007SCharles.Forsyth IMCALL, 146*46439007SCharles.Forsyth IMSPAWN, 147*46439007SCharles.Forsyth IMFRAME, 148*46439007SCharles.Forsyth IRET, 149*46439007SCharles.Forsyth IJMP, 150*46439007SCharles.Forsyth ICASE, 151*46439007SCharles.Forsyth IEXIT, 152*46439007SCharles.Forsyth INEW, 153*46439007SCharles.Forsyth INEWA, 154*46439007SCharles.Forsyth INEWCB, 155*46439007SCharles.Forsyth INEWCW, 156*46439007SCharles.Forsyth INEWCF, 157*46439007SCharles.Forsyth INEWCP, 158*46439007SCharles.Forsyth INEWCM, 159*46439007SCharles.Forsyth INEWCMP, 160*46439007SCharles.Forsyth ISEND, 161*46439007SCharles.Forsyth IRECV, 162*46439007SCharles.Forsyth ICONSB, 163*46439007SCharles.Forsyth ICONSW, 164*46439007SCharles.Forsyth ICONSP, 165*46439007SCharles.Forsyth ICONSF, 166*46439007SCharles.Forsyth ICONSM, 167*46439007SCharles.Forsyth ICONSMP, 168*46439007SCharles.Forsyth IHEADB, 169*46439007SCharles.Forsyth IHEADW, 170*46439007SCharles.Forsyth IHEADP, 171*46439007SCharles.Forsyth IHEADF, 172*46439007SCharles.Forsyth IHEADM, 173*46439007SCharles.Forsyth IHEADMP, 174*46439007SCharles.Forsyth ITAIL, 175*46439007SCharles.Forsyth ILEA, 176*46439007SCharles.Forsyth IINDX, 177*46439007SCharles.Forsyth IMOVP, 178*46439007SCharles.Forsyth IMOVM, 179*46439007SCharles.Forsyth IMOVMP, 180*46439007SCharles.Forsyth IMOVB, 181*46439007SCharles.Forsyth IMOVW, 182*46439007SCharles.Forsyth IMOVF, 183*46439007SCharles.Forsyth ICVTBW, 184*46439007SCharles.Forsyth ICVTWB, 185*46439007SCharles.Forsyth ICVTFW, 186*46439007SCharles.Forsyth ICVTWF, 187*46439007SCharles.Forsyth ICVTCA, 188*46439007SCharles.Forsyth ICVTAC, 189*46439007SCharles.Forsyth ICVTWC, 190*46439007SCharles.Forsyth ICVTCW, 191*46439007SCharles.Forsyth ICVTFC, 192*46439007SCharles.Forsyth ICVTCF, 193*46439007SCharles.Forsyth IADDB, 194*46439007SCharles.Forsyth IADDW, 195*46439007SCharles.Forsyth IADDF, 196*46439007SCharles.Forsyth ISUBB, 197*46439007SCharles.Forsyth ISUBW, 198*46439007SCharles.Forsyth ISUBF, 199*46439007SCharles.Forsyth IMULB, 200*46439007SCharles.Forsyth IMULW, 201*46439007SCharles.Forsyth IMULF, 202*46439007SCharles.Forsyth IDIVB, 203*46439007SCharles.Forsyth IDIVW, 204*46439007SCharles.Forsyth IDIVF, 205*46439007SCharles.Forsyth IMODW, 206*46439007SCharles.Forsyth IMODB, 207*46439007SCharles.Forsyth IANDB, 208*46439007SCharles.Forsyth IANDW, 209*46439007SCharles.Forsyth IORB, 210*46439007SCharles.Forsyth IORW, 211*46439007SCharles.Forsyth IXORB, 212*46439007SCharles.Forsyth IXORW, 213*46439007SCharles.Forsyth ISHLB, 214*46439007SCharles.Forsyth ISHLW, 215*46439007SCharles.Forsyth ISHRB, 216*46439007SCharles.Forsyth ISHRW, 217*46439007SCharles.Forsyth IINSC, 218*46439007SCharles.Forsyth IINDC, 219*46439007SCharles.Forsyth IADDC, 220*46439007SCharles.Forsyth ILENC, 221*46439007SCharles.Forsyth ILENA, 222*46439007SCharles.Forsyth ILENL, 223*46439007SCharles.Forsyth IBEQB, 224*46439007SCharles.Forsyth IBNEB, 225*46439007SCharles.Forsyth IBLTB, 226*46439007SCharles.Forsyth IBLEB, 227*46439007SCharles.Forsyth IBGTB, 228*46439007SCharles.Forsyth IBGEB, 229*46439007SCharles.Forsyth IBEQW, 230*46439007SCharles.Forsyth IBNEW, 231*46439007SCharles.Forsyth IBLTW, 232*46439007SCharles.Forsyth IBLEW, 233*46439007SCharles.Forsyth IBGTW, 234*46439007SCharles.Forsyth IBGEW, 235*46439007SCharles.Forsyth IBEQF, 236*46439007SCharles.Forsyth IBNEF, 237*46439007SCharles.Forsyth IBLTF, 238*46439007SCharles.Forsyth IBLEF, 239*46439007SCharles.Forsyth IBGTF, 240*46439007SCharles.Forsyth IBGEF, 241*46439007SCharles.Forsyth IBEQC, 242*46439007SCharles.Forsyth IBNEC, 243*46439007SCharles.Forsyth IBLTC, 244*46439007SCharles.Forsyth IBLEC, 245*46439007SCharles.Forsyth IBGTC, 246*46439007SCharles.Forsyth IBGEC, 247*46439007SCharles.Forsyth ISLICEA, 248*46439007SCharles.Forsyth ISLICELA, 249*46439007SCharles.Forsyth ISLICEC, 250*46439007SCharles.Forsyth IINDW, 251*46439007SCharles.Forsyth IINDF, 252*46439007SCharles.Forsyth IINDB, 253*46439007SCharles.Forsyth INEGF, 254*46439007SCharles.Forsyth IMOVL, 255*46439007SCharles.Forsyth IADDL, 256*46439007SCharles.Forsyth ISUBL, 257*46439007SCharles.Forsyth IDIVL, 258*46439007SCharles.Forsyth IMODL, 259*46439007SCharles.Forsyth IMULL, 260*46439007SCharles.Forsyth IANDL, 261*46439007SCharles.Forsyth IORL, 262*46439007SCharles.Forsyth IXORL, 263*46439007SCharles.Forsyth ISHLL, 264*46439007SCharles.Forsyth ISHRL, 265*46439007SCharles.Forsyth IBNEL, 266*46439007SCharles.Forsyth IBLTL, 267*46439007SCharles.Forsyth IBLEL, 268*46439007SCharles.Forsyth IBGTL, 269*46439007SCharles.Forsyth IBGEL, 270*46439007SCharles.Forsyth IBEQL, 271*46439007SCharles.Forsyth ICVTLF, 272*46439007SCharles.Forsyth ICVTFL, 273*46439007SCharles.Forsyth ICVTLW, 274*46439007SCharles.Forsyth ICVTWL, 275*46439007SCharles.Forsyth ICVTLC, 276*46439007SCharles.Forsyth ICVTCL, 277*46439007SCharles.Forsyth IHEADL, 278*46439007SCharles.Forsyth ICONSL, 279*46439007SCharles.Forsyth INEWCL, 280*46439007SCharles.Forsyth ICASEC, 281*46439007SCharles.Forsyth IINDL, 282*46439007SCharles.Forsyth IMOVPC, 283*46439007SCharles.Forsyth ITCMP, 284*46439007SCharles.Forsyth IMNEWZ, 285*46439007SCharles.Forsyth ICVTRF, 286*46439007SCharles.Forsyth ICVTFR, 287*46439007SCharles.Forsyth ICVTWS, 288*46439007SCharles.Forsyth ICVTSW, 289*46439007SCharles.Forsyth ILSRW, 290*46439007SCharles.Forsyth ILSRL, 291*46439007SCharles.Forsyth IECLR, 292*46439007SCharles.Forsyth INEWZ, 293*46439007SCharles.Forsyth INEWAZ, 294*46439007SCharles.Forsyth IRAISE, 295*46439007SCharles.Forsyth ICASEL, 296*46439007SCharles.Forsyth IMULX, 297*46439007SCharles.Forsyth IDIVX, 298*46439007SCharles.Forsyth ICVTXX, 299*46439007SCharles.Forsyth IMULX0, 300*46439007SCharles.Forsyth IDIVX0, 301*46439007SCharles.Forsyth ICVTXX0, 302*46439007SCharles.Forsyth IMULX1, 303*46439007SCharles.Forsyth IDIVX1, 304*46439007SCharles.Forsyth ICVTXX1, 305*46439007SCharles.Forsyth ICVTFX, 306*46439007SCharles.Forsyth ICVTXF, 307*46439007SCharles.Forsyth IEXPW, 308*46439007SCharles.Forsyth IEXPL, 309*46439007SCharles.Forsyth IEXPF, 310*46439007SCharles.Forsyth ISELF, 311*46439007SCharles.Forsyth # add new instructions here 312*46439007SCharles.Forsyth MAXDIS: con iota; 313*46439007SCharles.Forsyth 314*46439007SCharles.Forsyth init: fn(); 315*46439007SCharles.Forsyth loadobj: fn(file: string): (ref Mod, string); 316*46439007SCharles.Forsyth op2s: fn(op: int): string; 317*46439007SCharles.Forsyth inst2s: fn(ins: ref Inst): string; 318*46439007SCharles.Forsyth src: fn(file: string): string; 319*46439007SCharles.Forsyth}; 320*46439007SCharles.Forsyth# 321*46439007SCharles.Forsyth# derived by Vita Nuova Limited 1998 from /appl/wm/rt.b and /include/isa.h, both 322*46439007SCharles.Forsyth# Copyright © 1996-1999 Lucent Technologies Inc. All rights reserved. 323*46439007SCharles.Forsyth# 324