1 #include "l.h" 2 3 uchar ynone[] = 4 { 5 Ynone, Ynone, Ynone, Znone, 1, 6 0 7 }; 8 uchar ytext[] = 9 { 10 Ym, Ynone, Yi32, Zpseudo,0, 11 0 12 }; 13 uchar ypseudo[] = 14 { 15 Ynone, Ynone, Ynone, Zpseudo,0, 16 Ynone, Ynone, Yr, Zpseudo,0, 17 0 18 }; 19 uchar ynop[] = 20 { 21 Ynone, Ynone, Ynone, Zpseudo,1, 22 Ynone, Ynone, Yr, Zpseudo,1, 23 0 24 }; 25 uchar yadd[] = 26 { 27 Yri5, Ynri5, Yr, Zrrr, 0, 28 Yi32, Ynri5, Yr, Zirr, 1, 29 0 30 }; 31 uchar ycmp[] = 32 { 33 Yri5, Ynone, Yri5, Zrrx, 0, 34 Yi32, Ynone, Yr, Zirx, 1, 35 0 36 }; 37 uchar ymova[] = 38 { 39 Ym, Ynone, Yr, Zmr, 1, 40 0 41 }; 42 uchar ymov[] = 43 { 44 Yri5, Ynone, Yr, Zrxr, 0, 45 Yi32, Ynone, Yr, Zir, 1, 46 Ym, Ynone, Yr, Zmr, 1, 47 Yi32, Ynone, Ym, Zim, 0, 48 Yr, Ynone, Ym, Zrm, 1, 49 0 50 }; 51 uchar ybcond[] = 52 { 53 Ynone, Ynone, Ybr, Zbr, 1, 54 0 55 }; 56 uchar ycall[] = 57 { 58 Ynone, Ynone, Ybr, Zbr, 1, 59 Ynone, Ynone, Ym, Zmbr, 1, 60 0 61 }; 62 uchar ylong[] = 63 { 64 Yi32, Ynone, Ynone, Zlong, 1, 65 0 66 }; 67 uchar ysysctl[] = 68 { 69 Yr, Yr, Yr, Zrrr, 1, 70 0 71 }; 72 73 Optab optab[] = 74 /* as, ytab, andproto, opcode */ 75 { 76 { AXXX }, 77 { AADJSP }, 78 { ABYTE }, 79 { ADATA }, 80 { AGLOBL }, 81 { AGOK }, 82 { AHISTORY }, 83 { ALONG, ylong }, 84 { ANAME }, 85 { ANOP, ypseudo }, 86 { ARTS }, 87 { ATEXT, ytext }, 88 { ASYSCALL }, 89 { ASYSCTL, ysysctl, 0x659 }, 90 { AMOV, ymov, 0x5cc, 0x90, 0x92 }, 91 { AMOVA, ymova, 0x8c }, 92 { AMOVIB, ymov, 0x5cc, 0xc0, 0x82 }, 93 { AMOVIS, ymov, 0x5cc, 0xc8, 0x8a }, 94 { AMOVOB, ymov, 0x5cc, 0x80, 0x82 }, 95 { AMOVOS, ymov, 0x5cc, 0x88, 0x8a }, 96 { AMOVQ, ymov, 0x5fc, 0xb0, 0xb2 }, 97 { AMOVT, ymov, 0x5ec, 0xa0, 0xa2 }, 98 { AMOVV }, 99 { ASYNMOV }, 100 { ASYNMOVV }, 101 { ASYNMOVQ }, 102 { AADDC, yadd, 0x5b0 }, 103 { AADDI, yadd, 0x591 }, 104 { AADDO, yadd, 0x590 }, 105 { AALTERBIT }, 106 { AAND, yadd, 0x581 }, 107 { AANDNOT, yadd, 0x582 }, 108 { AATADD }, 109 { AATMOD }, 110 { ABAL, ycall, 0x0b, 0x85 }, 111 { AB, ycall, 0x08, 0x84 }, 112 { ABBC }, 113 { ABBS }, 114 { ABE, ybcond, 0x12 }, 115 { ABNE, ybcond, 0x15 }, 116 { ABL, ybcond, 0x14 }, 117 { ABLE, ybcond, 0x16 }, 118 { ABG, ybcond, 0x11 }, 119 { ABGE, ybcond, 0x13 }, 120 { ABO, ybcond, 0x17 }, 121 { ABNO, ybcond, 0x10 }, 122 { ACALL }, 123 { ACALLS }, 124 { ACHKBIT }, 125 { ACLRBIT }, 126 { ACMPI, ycmp, 0x5a1 }, 127 { ACMPO, ycmp, 0x5a0 }, 128 { ACMPDECI }, 129 { ACMPDECO }, 130 { ACMPINCI }, 131 { ACMPINCO }, 132 { ACMPIBE }, 133 { ACMPIBNE }, 134 { ACMPIBL }, 135 { ACMPIBLE }, 136 { ACMPIBG }, 137 { ACMPIBGE }, 138 { ACMPIBO }, 139 { ACMPIBNO }, 140 { ACMPOBE }, 141 { ACMPOBNE }, 142 { ACMPOBL }, 143 { ACMPOBLE }, 144 { ACMPOBG }, 145 { ACMPOBGE }, 146 { ACONCMPI }, 147 { ACONCMPO }, 148 { ADADDC }, 149 { ADIVI, yadd, 0x74b }, 150 { ADIVO, yadd, 0x70b }, 151 { ADMOVT }, 152 { ADSUBC }, 153 { AEDIV }, 154 { AEMUL }, 155 { AEXTRACT }, 156 { AFAULTE, ynone, 0x1a0 }, 157 { AFAULTNE, ynone, 0x1d0 }, 158 { AFAULTL, ynone, 0x1c0 }, 159 { AFAULTLE, ynone, 0x1e0 }, 160 { AFAULTG, ynone, 0x190 }, 161 { AFAULTGE, ynone, 0x1b0 }, 162 { AFAULTO, ynone, 0x1f0 }, 163 { AFAULTNO, ynone, 0x180 }, 164 { AFLUSHREG }, 165 { AFMARK, ynone, 0x66c }, 166 { AMARK }, 167 { AMODAC }, 168 { AMODI }, 169 { AMODIFY }, 170 { AMODPC, ysysctl, 0x655 }, 171 { AMODTC }, 172 { AMULI, yadd, 0x741 }, 173 { AMULO, yadd, 0x701 }, 174 { ANAND, yadd, 0x58e }, 175 { ANOR, yadd, 0x588 }, 176 { ANOT }, 177 { ANOTAND, yadd, 0x584 }, 178 { ANOTBIT }, 179 { ANOTOR, yadd, 0x58d }, 180 { AOR, yadd, 0x587 }, 181 { AORNOT, yadd, 0x58b }, 182 { AREMI, yadd, 0x748 }, 183 { AREMO, yadd, 0x708 }, 184 { ARET }, 185 { AROTATE, yadd, 0x59d }, 186 { ASCANBIT }, 187 { ASCANBYTE }, 188 { ASETBIT }, 189 { ASHLO, yadd, 0x59c }, 190 { ASHRO, yadd, 0x598 }, 191 { ASHLI, yadd, 0x59e }, 192 { ASHRI, yadd, 0x59b }, 193 { ASHRDI, yadd, 0x59a }, 194 { ASPANBIT }, 195 { ASUBC, yadd, 0x5b2 }, 196 { ASUBI, yadd, 0x593 }, 197 { ASUBO, yadd, 0x592 }, 198 { ASYNCF }, 199 { ATESTE }, 200 { ATESTNE }, 201 { ATESTL }, 202 { ATESTLE }, 203 { ATESTG }, 204 { ATESTGE }, 205 { ATESTO }, 206 { ATESTNO }, 207 { AXNOR, yadd, 0x589 }, 208 { AXOR, yadd, 0x586 }, 209 { AEND }, 210 0, 211 }; 212