| 1 | /* | 
|---|
| 2 | * Ported by the State University of New York at Buffalo by the Distributed | 
|---|
| 3 | * Computer Systems Lab, Department of Computer Science, 1991. | 
|---|
| 4 | */ | 
|---|
| 5 |  | 
|---|
| 6 | #ifndef tahoe_opcodeT | 
|---|
| 7 | #define tahoe_opcodeT int | 
|---|
| 8 | #endif /* no tahoe_opcodeT */ | 
|---|
| 9 |  | 
|---|
| 10 | struct vot_wot                  /* tahoe opcode table: wot to do with this */ | 
|---|
| 11 | /* particular opcode */ | 
|---|
| 12 | { | 
|---|
| 13 | char *            args;       /* how to compile said opcode */ | 
|---|
| 14 | tahoe_opcodeT       code;     /* op-code (may be > 8 bits!) */ | 
|---|
| 15 | }; | 
|---|
| 16 |  | 
|---|
| 17 | struct vot                      /* tahoe opcode text */ | 
|---|
| 18 | { | 
|---|
| 19 | char *            name;       /* opcode name: lowercase string  [key]  */ | 
|---|
| 20 | struct vot_wot    detail;     /* rest of opcode table          [datum] */ | 
|---|
| 21 | }; | 
|---|
| 22 |  | 
|---|
| 23 | #define vot_how args | 
|---|
| 24 | #define vot_code code | 
|---|
| 25 | #define vot_detail detail | 
|---|
| 26 | #define vot_name name | 
|---|
| 27 |  | 
|---|
| 28 | static struct vot | 
|---|
| 29 | votstrs[] = | 
|---|
| 30 | { | 
|---|
| 31 | {    "halt",    {"",                    0x00    } }, | 
|---|
| 32 | {    "sinf",    {"",                    0x05    } }, | 
|---|
| 33 | {    "ldf",     {"rl",                  0x06    } }, | 
|---|
| 34 | {    "ldd",     {"rq",                  0x07    } }, | 
|---|
| 35 | {    "addb2",   {"rbmb",                0x08    } }, | 
|---|
| 36 | {    "movb",    {"rbwb",                0x09    } }, | 
|---|
| 37 | {    "addw2",   {"rwmw",                0x0a    } }, | 
|---|
| 38 | {    "movw",    {"rwww",                0x0b    } }, | 
|---|
| 39 | {    "addl2",   {"rlml",                0x0c    } }, | 
|---|
| 40 | {    "movl",    {"rlwl",                0x0d    } }, | 
|---|
| 41 | {    "bbs",     {"rlvlbw",              0x0e    } }, | 
|---|
| 42 | {    "nop",     {"",                    0x10    } }, | 
|---|
| 43 | {    "brb",     {"bb",                  0x11    } }, | 
|---|
| 44 | {    "brw",     {"bw",                  0x13    } }, | 
|---|
| 45 | {    "cosf",    {"",                    0x15    } }, | 
|---|
| 46 | {    "lnf",     {"rl",                  0x16    } }, | 
|---|
| 47 | {    "lnd",     {"rq",                  0x17    } }, | 
|---|
| 48 | {    "addb3",   {"rbrbwb",              0x18    } }, | 
|---|
| 49 | {    "cmpb",    {"rbwb",                0x19    } }, | 
|---|
| 50 | {    "addw3",   {"rwrwww",              0x1a    } }, | 
|---|
| 51 | {    "cmpw",    {"rwww",                0x1b    } }, | 
|---|
| 52 | {    "addl3",   {"rlrlwl",              0x1c    } }, | 
|---|
| 53 | {    "cmpl",    {"rlwl",                0x1d    } }, | 
|---|
| 54 | {    "bbc",     {"rlvlbw",              0x1e    } }, | 
|---|
| 55 | {    "rei",     {"",                    0x20    } }, | 
|---|
| 56 | {    "bneq",    {"bb",                  0x21    } }, | 
|---|
| 57 | {    "bnequ",   {"bb",                  0x21    } }, | 
|---|
| 58 | {    "cvtwl",   {"rwwl",                0x23    } }, | 
|---|
| 59 | {    "stf",     {"wl",                  0x26    } }, | 
|---|
| 60 | {    "std",     {"wq",                  0x27    } }, | 
|---|
| 61 | {    "subb2",   {"rbmb",                0x28    } }, | 
|---|
| 62 | {    "mcomb",   {"rbwb",                0x29    } }, | 
|---|
| 63 | {    "subw2",   {"rwmw",                0x2a    } }, | 
|---|
| 64 | {    "mcomw",   {"rwww",                0x2b    } }, | 
|---|
| 65 | {    "subl2",   {"rlml",                0x2c    } }, | 
|---|
| 66 | {    "mcoml",   {"rlwl",                0x2d    } }, | 
|---|
| 67 | {    "emul",    {"rlrlrlwq",            0x2e    } }, | 
|---|
| 68 | {    "aoblss",  {"rlmlbw",              0x2f    } }, | 
|---|
| 69 | {    "bpt",     {"",                    0x30    } }, | 
|---|
| 70 | {    "beql",    {"bb",                  0x31    } }, | 
|---|
| 71 | {    "beqlu",   {"bb",                  0x31    } }, | 
|---|
| 72 | {    "cvtwb",   {"rwwb",                0x33    } }, | 
|---|
| 73 | {    "logf",    {"",                    0x35    } }, | 
|---|
| 74 | {    "cmpf",    {"rl",                  0x36    } }, | 
|---|
| 75 | {    "cmpd",    {"rq",                  0x37    } }, | 
|---|
| 76 | {    "subb3",   {"rbrbwb",              0x38    } }, | 
|---|
| 77 | {    "bitb",    {"rbrb",                0x39    } }, | 
|---|
| 78 | {    "subw3",   {"rwrwww",              0x3a    } }, | 
|---|
| 79 | {    "bitw",    {"rwrw",                0x3b    } }, | 
|---|
| 80 | {    "subl3",   {"rlrlwl",              0x3c    } }, | 
|---|
| 81 | {    "bitl",    {"rlrl",                0x3d    } }, | 
|---|
| 82 | {    "ediv",    {"rlrqwlwl",            0x3e    } }, | 
|---|
| 83 | {    "aobleq",  {"rlmlbw",              0x3f    } }, | 
|---|
| 84 | {    "ret",     {"",                    0x40    } }, | 
|---|
| 85 | {    "bgtr",    {"bb",                  0x41    } }, | 
|---|
| 86 | {    "sqrtf",   {"",                    0x45    } }, | 
|---|
| 87 | {    "cmpf2",   {"rl",                  0x46    } }, | 
|---|
| 88 | {    "cmpd2",   {"rqrq",                0x47    } }, | 
|---|
| 89 | {    "shll",    {"rbrlwl",              0x48    } }, | 
|---|
| 90 | {    "clrb",    {"wb",                  0x49    } }, | 
|---|
| 91 | {    "shlq",    {"rbrqwq",              0x4a    } }, | 
|---|
| 92 | {    "clrw",    {"ww",                  0x4b    } }, | 
|---|
| 93 | {    "mull2",   {"rlml",                0x4c    } }, | 
|---|
| 94 | {    "clrl",    {"wl",                  0x4d    } }, | 
|---|
| 95 | {    "shal",    {"rbrlwl",              0x4e    } }, | 
|---|
| 96 | {    "bleq",    {"bb",                  0x51    } }, | 
|---|
| 97 | {    "expf",    {"",                    0x55    } }, | 
|---|
| 98 | {    "tstf",    {"",                    0x56    } }, | 
|---|
| 99 | {    "tstd",    {"",                    0x57    } }, | 
|---|
| 100 | {    "shrl",    {"rbrlwl",              0x58    } }, | 
|---|
| 101 | {    "tstb",    {"rb",                  0x59    } }, | 
|---|
| 102 | {    "shrq",    {"rbrqwq",              0x5a    } }, | 
|---|
| 103 | {    "tstw",    {"rw",                  0x5b    } }, | 
|---|
| 104 | {    "mull3",   {"rlrlwl",              0x5c    } }, | 
|---|
| 105 | {    "tstl",    {"rl",                  0x5d    } }, | 
|---|
| 106 | {    "shar",    {"rbrlwl",              0x5e    } }, | 
|---|
| 107 | {    "bbssi",   {"rlmlbw",              0x5f    } }, | 
|---|
| 108 | {    "ldpctx",  {"",                    0x60    } }, | 
|---|
| 109 | {    "pushd",   {"",                    0x67    } }, | 
|---|
| 110 | {    "incb",    {"mb",                  0x69    } }, | 
|---|
| 111 | {    "incw",    {"mw",                  0x6b    } }, | 
|---|
| 112 | {    "divl2",   {"rlml",                0x6c    } }, | 
|---|
| 113 | {    "incl",    {"ml",                  0x6d    } }, | 
|---|
| 114 | {    "cvtlb",   {"rlwb",                0x6f    } }, | 
|---|
| 115 | {    "svpctx",  {"",                    0x70    } }, | 
|---|
| 116 | {    "jmp",     {"ab",                  0x71    } }, | 
|---|
| 117 | {    "cvlf",    {"rl",                  0x76    } }, | 
|---|
| 118 | {    "cvld",    {"rl",                  0x77    } }, | 
|---|
| 119 | {    "decb",    {"mb",                  0x79    } }, | 
|---|
| 120 | {    "decw",    {"mw",                  0x7b    } }, | 
|---|
| 121 | {    "divl3",   {"rlrlwl",              0x7c    } }, | 
|---|
| 122 | {    "decl",    {"ml",                  0x7d    } }, | 
|---|
| 123 | {    "cvtlw",   {"rlww",                0x7f    } }, | 
|---|
| 124 | {    "bgeq",    {"bb",                  0x81    } }, | 
|---|
| 125 | {    "movs2",   {"abab",                0x82    } }, | 
|---|
| 126 | {    "cvfl",    {"wl",                  0x86    } }, | 
|---|
| 127 | {    "cvdl",    {"wl",                  0x87    } }, | 
|---|
| 128 | {    "orb2",    {"rbmb",                0x88    } }, | 
|---|
| 129 | {    "cvtbl",   {"rbwl",                0x89    } }, | 
|---|
| 130 | {    "orw2",    {"rwmw",                0x8a    } }, | 
|---|
| 131 | {    "bispsw",  {"rw",                  0x8b    } }, | 
|---|
| 132 | {    "orl2",    {"rlml",                0x8c    } }, | 
|---|
| 133 | {    "adwc",    {"rlml",                0x8d    } }, | 
|---|
| 134 | {    "adda",    {"rlml",                0x8e    } }, | 
|---|
| 135 | {    "blss",    {"bb",                  0x91    } }, | 
|---|
| 136 | {    "cmps2",   {"abab",                0x92    } }, | 
|---|
| 137 | {    "ldfd",    {"rl",                  0x97    } }, | 
|---|
| 138 | {    "orb3",    {"rbrbwb",              0x98    } }, | 
|---|
| 139 | {    "cvtbw",   {"rbww",                0x99    } }, | 
|---|
| 140 | {    "orw3",    {"rwrwww",              0x9a    } }, | 
|---|
| 141 | {    "bicpsw",  {"rw",                  0x9b    } }, | 
|---|
| 142 | {    "orl3",    {"rlrlwl",              0x9c    } }, | 
|---|
| 143 | {    "sbwc",    {"rlml",                0x9d    } }, | 
|---|
| 144 | {    "suba",    {"rlml",                0x9e    } }, | 
|---|
| 145 | {    "bgtru",   {"bb",                  0xa1    } }, | 
|---|
| 146 | {    "cvdf",    {"",                    0xa6    } }, | 
|---|
| 147 | {    "andb2",   {"rbmb",                0xa8    } }, | 
|---|
| 148 | {    "movzbl",  {"rbwl",                0xa9    } }, | 
|---|
| 149 | {    "andw2",   {"rwmw",                0xaa    } }, | 
|---|
| 150 | {    "loadr",   {"rwal",                0xab    } }, | 
|---|
| 151 | {    "andl2",   {"rlml",                0xac    } }, | 
|---|
| 152 | {    "mtpr",    {"rlrl",                0xad    } }, | 
|---|
| 153 | {    "ffs",     {"rlwl",                0xae    } }, | 
|---|
| 154 | {    "blequ",   {"bb",                  0xb1    } }, | 
|---|
| 155 | {    "negf",    {"",                    0xb6    } }, | 
|---|
| 156 | {    "negd",    {"",                    0xb7    } }, | 
|---|
| 157 | {    "andb3",   {"rbrbwb",              0xb8    } }, | 
|---|
| 158 | {    "movzbw",  {"rbww",                0xb9    } }, | 
|---|
| 159 | {    "andw3",   {"rwrwww",              0xba    } }, | 
|---|
| 160 | {    "storer",  {"rwal",                0xbb    } }, | 
|---|
| 161 | {    "andl3",   {"rlrlwl",              0xbc    } }, | 
|---|
| 162 | {    "mfpr",    {"rlwl",                0xbd    } }, | 
|---|
| 163 | {    "ffc",     {"rlwl",                0xbe    } }, | 
|---|
| 164 | {    "calls",   {"rbab",                0xbf    } }, | 
|---|
| 165 | {    "prober",  {"rbabrl",              0xc0    } }, | 
|---|
| 166 | {    "bvc",     {"bb",                  0xc1    } }, | 
|---|
| 167 | {    "movs3",   {"ababrw",              0xc2    } }, | 
|---|
| 168 | {    "movzwl",  {"rwwl",                0xc3    } }, | 
|---|
| 169 | {    "addf",    {"rl",                  0xc6    } }, | 
|---|
| 170 | {    "addd",    {"rq",                  0xc7    } }, | 
|---|
| 171 | {    "xorb2",   {"rbmb",                0xc8    } }, | 
|---|
| 172 | {    "movob",   {"rbwb",                0xc9    } }, | 
|---|
| 173 | {    "xorw2",   {"rwmw",                0xca    } }, | 
|---|
| 174 | {    "movow",   {"rwww",                0xcb    } }, | 
|---|
| 175 | {    "xorl2",   {"rlml",                0xcc    } }, | 
|---|
| 176 | {    "movpsl",  {"wl",                  0xcd    } }, | 
|---|
| 177 | {    "kcall",   {"rw",                  0xcf    } }, | 
|---|
| 178 | {    "probew",  {"rbabrl",              0xd0    } }, | 
|---|
| 179 | {    "bvs",     {"bb",                  0xd1    } }, | 
|---|
| 180 | {    "cmps3",   {"ababrw",              0xd2    } }, | 
|---|
| 181 | {    "subf",    {"rq",                  0xd6    } }, | 
|---|
| 182 | {    "subd",    {"rq",                  0xd7    } }, | 
|---|
| 183 | {    "xorb3",   {"rbrbwb",              0xd8    } }, | 
|---|
| 184 | {    "pushb",   {"rb",                  0xd9    } }, | 
|---|
| 185 | {    "xorw3",   {"rwrwww",              0xda    } }, | 
|---|
| 186 | {    "pushw",   {"rw",                  0xdb    } }, | 
|---|
| 187 | {    "xorl3",   {"rlrlwl",              0xdc    } }, | 
|---|
| 188 | {    "pushl",   {"rl",                  0xdd    } }, | 
|---|
| 189 | {    "insque",  {"abab",                0xe0    } }, | 
|---|
| 190 | {    "bcs",     {"bb",                  0xe1    } }, | 
|---|
| 191 | {    "bgequ",   {"bb",                  0xe1    } }, | 
|---|
| 192 | {    "mulf",    {"rq",                  0xe6    } }, | 
|---|
| 193 | {    "muld",    {"rq",                  0xe7    } }, | 
|---|
| 194 | {    "mnegb",   {"rbwb",                0xe8    } }, | 
|---|
| 195 | {    "movab",   {"abwl",                0xe9    } }, | 
|---|
| 196 | {    "mnegw",   {"rwww",                0xea    } }, | 
|---|
| 197 | {    "movaw",   {"awwl",                0xeb    } }, | 
|---|
| 198 | {    "mnegl",   {"rlwl",                0xec    } }, | 
|---|
| 199 | {    "moval",   {"alwl",                0xed    } }, | 
|---|
| 200 | {    "remque",  {"ab",                  0xf0    } }, | 
|---|
| 201 | {    "bcc",     {"bb",                  0xf1    } }, | 
|---|
| 202 | {    "blssu",   {"bb",                  0xf1    } }, | 
|---|
| 203 | {    "divf",    {"rq",                  0xf6    } }, | 
|---|
| 204 | {    "divd",    {"rq",                  0xf7    } }, | 
|---|
| 205 | {    "movblk",  {"alalrw",              0xf8    } }, | 
|---|
| 206 | {    "pushab",  {"ab",                  0xf9    } }, | 
|---|
| 207 | {    "pushaw",  {"aw",                  0xfb    } }, | 
|---|
| 208 | {    "casel",   {"rlrlrl",              0xfc    } }, | 
|---|
| 209 | {    "pushal",  {"al",                  0xfd    } }, | 
|---|
| 210 | {    "callf",   {"rbab",                0xfe    } }, | 
|---|
| 211 | {      ""       ,   ""          } /* empty is end sentinel */ | 
|---|
| 212 |  | 
|---|
| 213 | }; | 
|---|