OLD | NEW |
(Empty) | |
| 1 #line 1 "msp430-decode.opc" |
| 2 /* -*- c -*- */ |
| 3 #include "sysdep.h" |
| 4 #include <stdio.h> |
| 5 #include <stdlib.h> |
| 6 #include <string.h> |
| 7 #include "ansidecl.h" |
| 8 #include "opcode/msp430-decode.h" |
| 9 |
| 10 static int trace = 0; |
| 11 |
| 12 typedef struct |
| 13 { |
| 14 MSP430_Opcode_Decoded * msp430; |
| 15 int (* getbyte)(void *); |
| 16 void * ptr; |
| 17 unsigned char * op; |
| 18 int op_ptr; |
| 19 int pc; |
| 20 } LocalData; |
| 21 |
| 22 #define AU ATTRIBUTE_UNUSED |
| 23 #define GETBYTE() getbyte_swapped (ld) |
| 24 #define B ((unsigned long) GETBYTE ()) |
| 25 |
| 26 static int |
| 27 getbyte_swapped (LocalData *ld) |
| 28 { |
| 29 int b; |
| 30 if (ld->op_ptr == ld->msp430->n_bytes) |
| 31 { |
| 32 do { |
| 33 b = ld->getbyte (ld->ptr); |
| 34 /*fprintf(stderr, "[\033[32m%02x\033[0m]", b & 0xff);*/ |
| 35 ld->op [(ld->msp430->n_bytes++)^1] = b; |
| 36 } while (ld->msp430->n_bytes & 1); |
| 37 } |
| 38 return ld->op[ld->op_ptr++]; |
| 39 } |
| 40 |
| 41 #define ID(x) msp430->id = x |
| 42 #define OP(n, t, r, a) (msp430->op[n].type = t, \ |
| 43 msp430->op[n].reg = r, \ |
| 44 msp430->op[n].addend = a) |
| 45 #define OPX(n, t, r1, r2, a) \ |
| 46 (msp430->op[n].type = t, \ |
| 47 msp430->op[n].reg = r1, \ |
| 48 msp430->op[n].reg2 = r2, \ |
| 49 msp430->op[n].addend = a) |
| 50 |
| 51 #define SYNTAX(x) msp430->syntax = x |
| 52 #define UNSUPPORTED() \ |
| 53 msp430->syntax = "*unknown*" |
| 54 |
| 55 #define DC(c) OP (0, MSP430_Operand_Immediate, 0, c) |
| 56 #define DR(r) OP (0, MSP430_Operand_Register, r, 0) |
| 57 #define DM(r, a) OP (0, MSP430_Operand_Indirect, r, a) |
| 58 #define DA(a) OP (0, MSP430_Operand_Indirect, MSR_None, a) |
| 59 #define AD(r, ad) encode_ad (r, ad, ld, 0) |
| 60 #define ADX(r, ad, x) encode_ad (r, ad, ld, x) |
| 61 |
| 62 #define SC(c) OP (1, MSP430_Operand_Immediate, 0, c) |
| 63 #define SR(r) OP (1, MSP430_Operand_Register, r, 0) |
| 64 #define SM(r, a) OP (1, MSP430_Operand_Indirect, r, a) |
| 65 #define SA(a) OP (1, MSP430_Operand_Indirect, MSR_None, a) |
| 66 #define SI(r) OP (1, MSP430_Operand_Indirect_Postinc, r, 0) |
| 67 #define AS(r, as) encode_as (r, as, ld, 0) |
| 68 #define ASX(r, as, x) encode_as (r, as, ld, x) |
| 69 |
| 70 #define BW(x) msp430->size = (x ? 8 : 16) |
| 71 /* The last 20 is for SWPBX.Z and SXTX.A */ |
| 72 #define ABW(a, x) msp430->size = (a ? ((x ? 8 : 16)) : (x ? 20 : 20)) |
| 73 |
| 74 #define IMMU(bytes) immediate (bytes, 0, ld) |
| 75 #define IMMS(bytes) immediate (bytes, 1, ld) |
| 76 |
| 77 /* Helper macros for known status bits settings */ |
| 78 #define F_____ msp430->flags_1 = msp430->flags_0 = 0; msp430->flags_set
= 0 |
| 79 #define F_VNZC msp430->flags_1 = msp430->flags_0 = 0; msp430->flags_set
= 0x87 |
| 80 #define F_0NZC msp430->flags_1 = 0; msp430->flags_0 = 0x80; msp430->fla
gs_set = 0x07 |
| 81 |
| 82 |
| 83 /* The chip is little-endian, but GETBYTE byte-swaps words because the |
| 84 decoder is based on 16-bit "words" so *this* logic is big-endian. */ |
| 85 static int |
| 86 immediate (int bytes, int sign_extend, LocalData * ld) |
| 87 { |
| 88 unsigned long i = 0; |
| 89 |
| 90 switch (bytes) |
| 91 { |
| 92 case 1: |
| 93 i |= B; |
| 94 if (sign_extend && (i & 0x80)) |
| 95 i -= 0x100; |
| 96 break; |
| 97 case 2: |
| 98 i |= B << 8; |
| 99 i |= B; |
| 100 if (sign_extend && (i & 0x8000)) |
| 101 i -= 0x10000; |
| 102 break; |
| 103 case 3: |
| 104 i |= B << 16; |
| 105 i |= B << 8; |
| 106 i |= B; |
| 107 if (sign_extend && (i & 0x800000)) |
| 108 i -= 0x1000000; |
| 109 break; |
| 110 case 4: |
| 111 i |= B << 24; |
| 112 i |= B << 16; |
| 113 i |= B << 8; |
| 114 i |= B; |
| 115 if (sign_extend && (i & 0x80000000ULL)) |
| 116 i -= 0x100000000ULL; |
| 117 break; |
| 118 default: |
| 119 fprintf (stderr, "Programmer error: immediate() called with invalid byte c
ount %d\n", bytes); |
| 120 abort(); |
| 121 } |
| 122 /*fprintf(stderr, "\033[35mIMM(%d,%d,%#lx)\033[0m", bytes, sign_extend, i);*/ |
| 123 return i; |
| 124 } |
| 125 |
| 126 /* |
| 127 PC SP SR CG |
| 128 As |
| 129 00 Rn - - R2 #0 |
| 130 01 X(Rn) Sym - X(abs) #1 |
| 131 10 (Rn) - - #4 #2 |
| 132 11 (Rn++) #imm - #8 #-1 |
| 133 |
| 134 Ad |
| 135 0 Rn - - - - |
| 136 1 X(Rn) Sym - X(abs) - |
| 137 */ |
| 138 |
| 139 static void |
| 140 encode_ad (int reg, int ad, LocalData *ld, int ext) |
| 141 { |
| 142 MSP430_Opcode_Decoded * msp430 = ld->msp430; |
| 143 |
| 144 /*fprintf(stderr, "[\033[31mAD %d R%d\033[0m]", ad, reg);*/ |
| 145 if (ad) |
| 146 { |
| 147 int x = IMMU(2) | (ext << 16); |
| 148 switch (reg) |
| 149 { |
| 150 case 0: /* (PC) -> Symbolic */ |
| 151 DA (x + ld->pc + ld->op_ptr - 2); |
| 152 break; |
| 153 case 2: /* (SR) -> Absolute */ |
| 154 DA (x); |
| 155 break; |
| 156 default: |
| 157 DM (reg, x); |
| 158 break; |
| 159 } |
| 160 } |
| 161 else |
| 162 { |
| 163 DR (reg); |
| 164 } |
| 165 } |
| 166 |
| 167 static void |
| 168 encode_as (int reg, int as, LocalData *ld, int ext) |
| 169 { |
| 170 MSP430_Opcode_Decoded * msp430 = ld->msp430; |
| 171 int x; |
| 172 |
| 173 /*fprintf(stderr, "[\033[31mAS %d R%d\033[0m]", as, reg);*/ |
| 174 switch (as) |
| 175 { |
| 176 case 0: |
| 177 switch (reg) |
| 178 { |
| 179 case 3: |
| 180 SC (0); |
| 181 break; |
| 182 default: |
| 183 SR (reg); |
| 184 break; |
| 185 } |
| 186 break; |
| 187 case 1: |
| 188 switch (reg) |
| 189 { |
| 190 case 0: /* PC -> Symbolic */ |
| 191 x = IMMU(2) | (ext << 16); |
| 192 SA (x + ld->pc + ld->op_ptr - 2); |
| 193 break; |
| 194 case 2: /* SR -> Absolute */ |
| 195 x = IMMU(2) | (ext << 16); |
| 196 SA (x); |
| 197 break; |
| 198 case 3: |
| 199 SC (1); |
| 200 break; |
| 201 default: |
| 202 x = IMMU(2) | (ext << 16); |
| 203 SM (reg, x); |
| 204 break; |
| 205 } |
| 206 break; |
| 207 case 2: |
| 208 switch (reg) |
| 209 { |
| 210 case 2: |
| 211 SC (4); |
| 212 break; |
| 213 case 3: |
| 214 SC (2); |
| 215 break; |
| 216 case MSR_None: |
| 217 SA (0); |
| 218 default: |
| 219 SM (reg, 0); |
| 220 break; |
| 221 } |
| 222 break; |
| 223 case 3: |
| 224 switch (reg) |
| 225 { |
| 226 case 0: |
| 227 { |
| 228 /* This fetch *is* the *PC++ that the opcode encodes :-) */ |
| 229 x = IMMU(2) | (ext << 16); |
| 230 SC (x); |
| 231 } |
| 232 break; |
| 233 case 2: |
| 234 SC (8); |
| 235 break; |
| 236 case 3: |
| 237 SC (-1); |
| 238 break; |
| 239 default: |
| 240 SI (reg); |
| 241 break; |
| 242 } |
| 243 break; |
| 244 } |
| 245 } |
| 246 |
| 247 static void |
| 248 encode_rep_zc (int srxt, int dsxt, LocalData *ld) |
| 249 { |
| 250 MSP430_Opcode_Decoded * msp430 = ld->msp430; |
| 251 |
| 252 msp430->repeat_reg = srxt & 1; |
| 253 msp430->repeats = dsxt; |
| 254 msp430->zc = (srxt & 2) ? 1 : 0; |
| 255 } |
| 256 |
| 257 #define REPZC(s,d) encode_rep_zc (s, d, ld) |
| 258 |
| 259 static int |
| 260 dopc_to_id (int dopc) |
| 261 { |
| 262 switch (dopc) |
| 263 { |
| 264 case 4: return MSO_mov; |
| 265 case 5: return MSO_add; |
| 266 case 6: return MSO_addc; |
| 267 case 7: return MSO_subc; |
| 268 case 8: return MSO_sub; |
| 269 case 9: return MSO_cmp; |
| 270 case 10: return MSO_dadd; |
| 271 case 11: return MSO_bit; |
| 272 case 12: return MSO_bic; |
| 273 case 13: return MSO_bis; |
| 274 case 14: return MSO_xor; |
| 275 case 15: return MSO_and; |
| 276 default: |
| 277 return MSO_unknown; |
| 278 } |
| 279 } |
| 280 |
| 281 static int |
| 282 sopc_to_id (int sop,int c) |
| 283 { |
| 284 switch (sop*2+c) |
| 285 { |
| 286 case 0: return MSO_rrc; |
| 287 case 1: return MSO_swpb; |
| 288 case 2: return MSO_rra; |
| 289 case 3: return MSO_sxt; |
| 290 case 4: return MSO_push; |
| 291 case 5: return MSO_call; |
| 292 case 6: return MSO_reti; |
| 293 default: |
| 294 return MSO_unknown; |
| 295 } |
| 296 } |
| 297 |
| 298 int |
| 299 msp430_decode_opcode (unsigned long pc, |
| 300 MSP430_Opcode_Decoded * msp430, |
| 301 int (* getbyte)(void *), |
| 302 void * ptr) |
| 303 { |
| 304 LocalData lds, * ld = &lds; |
| 305 unsigned char op_buf[20] = {0}; |
| 306 unsigned char *op = op_buf; |
| 307 int raddr; |
| 308 int al_bit; |
| 309 int srxt_bits, dsxt_bits; |
| 310 |
| 311 lds.msp430 = msp430; |
| 312 lds.getbyte = getbyte; |
| 313 lds.ptr = ptr; |
| 314 lds.op = op; |
| 315 lds.op_ptr = 0; |
| 316 lds.pc = pc; |
| 317 |
| 318 memset (msp430, 0, sizeof (*msp430)); |
| 319 |
| 320 /* These are overridden by an extension word. */ |
| 321 al_bit = 1; |
| 322 srxt_bits = 0; |
| 323 dsxt_bits = 0; |
| 324 |
| 325 post_extension_word: |
| 326 ; |
| 327 |
| 328 /* 430X extention word. */ |
| 329 GETBYTE (); |
| 330 switch (op[0] & 0xff) |
| 331 { |
| 332 case 0x00: |
| 333 GETBYTE (); |
| 334 switch (op[1] & 0xf0) |
| 335 { |
| 336 case 0x00: |
| 337 op_semantics_1: |
| 338 { |
| 339 /** 0000 srcr 0000 dstr MOVA @%1, %0 */ |
| 340 #line 419 "msp430-decode.opc" |
| 341 int srcr AU = op[0] & 0x0f; |
| 342 #line 419 "msp430-decode.opc" |
| 343 int dstr AU = op[1] & 0x0f; |
| 344 if (trace) |
| 345 { |
| 346 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 347 "/** 0000 srcr 0000 dstr MOVA @%1, %0 */"
, |
| 348 op[0], op[1]); |
| 349 printf (" srcr = 0x%x,", srcr); |
| 350 printf (" dstr = 0x%x\n", dstr); |
| 351 } |
| 352 SYNTAX("MOVA @%1, %0"); |
| 353 #line 419 "msp430-decode.opc" |
| 354 ID (MSO_mov); SM (srcr, 0); DR (dstr); |
| 355 msp430->size = 20; |
| 356 msp430->ofs_430x = 1; |
| 357 |
| 358 } |
| 359 break; |
| 360 case 0x10: |
| 361 op_semantics_2: |
| 362 { |
| 363 /** 0000 srcr 0001 dstr MOVA @%1+, %0 */ |
| 364 #line 424 "msp430-decode.opc" |
| 365 int srcr AU = op[0] & 0x0f; |
| 366 #line 424 "msp430-decode.opc" |
| 367 int dstr AU = op[1] & 0x0f; |
| 368 if (trace) |
| 369 { |
| 370 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 371 "/** 0000 srcr 0001 dstr MOVA @%1+, %0 */
", |
| 372 op[0], op[1]); |
| 373 printf (" srcr = 0x%x,", srcr); |
| 374 printf (" dstr = 0x%x\n", dstr); |
| 375 } |
| 376 SYNTAX("MOVA @%1+, %0"); |
| 377 #line 424 "msp430-decode.opc" |
| 378 ID (MSO_mov); SI (srcr); DR (dstr); |
| 379 msp430->size = 20; |
| 380 msp430->ofs_430x = 1; |
| 381 |
| 382 } |
| 383 break; |
| 384 case 0x20: |
| 385 op_semantics_3: |
| 386 { |
| 387 /** 0000 srcr 0010 dstr MOVA &%1, %0 */ |
| 388 #line 429 "msp430-decode.opc" |
| 389 int srcr AU = op[0] & 0x0f; |
| 390 #line 429 "msp430-decode.opc" |
| 391 int dstr AU = op[1] & 0x0f; |
| 392 if (trace) |
| 393 { |
| 394 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 395 "/** 0000 srcr 0010 dstr MOVA &%1, %0 */"
, |
| 396 op[0], op[1]); |
| 397 printf (" srcr = 0x%x,", srcr); |
| 398 printf (" dstr = 0x%x\n", dstr); |
| 399 } |
| 400 SYNTAX("MOVA &%1, %0"); |
| 401 #line 429 "msp430-decode.opc" |
| 402 ID (MSO_mov); SA ((srcr << 16) + IMMU(2)); DR (dstr); |
| 403 msp430->size = 20; |
| 404 msp430->ofs_430x = 1; |
| 405 |
| 406 } |
| 407 break; |
| 408 case 0x30: |
| 409 op_semantics_4: |
| 410 { |
| 411 /** 0000 srcr 0011 dstr MOVA %1, %0 */ |
| 412 #line 434 "msp430-decode.opc" |
| 413 int srcr AU = op[0] & 0x0f; |
| 414 #line 434 "msp430-decode.opc" |
| 415 int dstr AU = op[1] & 0x0f; |
| 416 if (trace) |
| 417 { |
| 418 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 419 "/** 0000 srcr 0011 dstr MOVA %1, %0 */", |
| 420 op[0], op[1]); |
| 421 printf (" srcr = 0x%x,", srcr); |
| 422 printf (" dstr = 0x%x\n", dstr); |
| 423 } |
| 424 SYNTAX("MOVA %1, %0"); |
| 425 #line 434 "msp430-decode.opc" |
| 426 ID (MSO_mov); SM (srcr, IMMS(2)); DR (dstr); |
| 427 msp430->size = 20; |
| 428 msp430->ofs_430x = 1; |
| 429 |
| 430 } |
| 431 break; |
| 432 case 0x40: |
| 433 case 0x50: |
| 434 op_semantics_5: |
| 435 { |
| 436 /** 0000 bt00 010w dstr RRCM.A %c, %0 */ |
| 437 #line 501 "msp430-decode.opc" |
| 438 int bt AU = (op[0] >> 2) & 0x03; |
| 439 #line 501 "msp430-decode.opc" |
| 440 int w AU = (op[1] >> 4) & 0x01; |
| 441 #line 501 "msp430-decode.opc" |
| 442 int dstr AU = op[1] & 0x0f; |
| 443 if (trace) |
| 444 { |
| 445 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 446 "/** 0000 bt00 010w dstr RRCM.A %c, %0 */
", |
| 447 op[0], op[1]); |
| 448 printf (" bt = 0x%x,", bt); |
| 449 printf (" w = 0x%x,", w); |
| 450 printf (" dstr = 0x%x\n", dstr); |
| 451 } |
| 452 SYNTAX("RRCM.A %c, %0"); |
| 453 #line 501 "msp430-decode.opc" |
| 454 ID (MSO_rrc); DR (dstr); SR (dstr); |
| 455 msp430->repeats = bt; |
| 456 msp430->size = w ? 16 : 20; |
| 457 msp430->ofs_430x = 1; |
| 458 F_0NZC; |
| 459 |
| 460 } |
| 461 break; |
| 462 case 0x60: |
| 463 op_semantics_6: |
| 464 { |
| 465 /** 0000 srcr 0110 dstr MOVA %1, &%0 */ |
| 466 #line 439 "msp430-decode.opc" |
| 467 int srcr AU = op[0] & 0x0f; |
| 468 #line 439 "msp430-decode.opc" |
| 469 int dstr AU = op[1] & 0x0f; |
| 470 if (trace) |
| 471 { |
| 472 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 473 "/** 0000 srcr 0110 dstr MOVA %1, &%0 */"
, |
| 474 op[0], op[1]); |
| 475 printf (" srcr = 0x%x,", srcr); |
| 476 printf (" dstr = 0x%x\n", dstr); |
| 477 } |
| 478 SYNTAX("MOVA %1, &%0"); |
| 479 #line 439 "msp430-decode.opc" |
| 480 ID (MSO_mov); SR (srcr); DA ((dstr << 16) + IMMU(2)); |
| 481 msp430->size = 20; |
| 482 msp430->ofs_430x = 1; |
| 483 |
| 484 } |
| 485 break; |
| 486 case 0x70: |
| 487 op_semantics_7: |
| 488 { |
| 489 /** 0000 srcr 0111 dstr MOVA %1, &%0 */ |
| 490 #line 444 "msp430-decode.opc" |
| 491 int srcr AU = op[0] & 0x0f; |
| 492 #line 444 "msp430-decode.opc" |
| 493 int dstr AU = op[1] & 0x0f; |
| 494 if (trace) |
| 495 { |
| 496 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 497 "/** 0000 srcr 0111 dstr MOVA %1, &%0 */"
, |
| 498 op[0], op[1]); |
| 499 printf (" srcr = 0x%x,", srcr); |
| 500 printf (" dstr = 0x%x\n", dstr); |
| 501 } |
| 502 SYNTAX("MOVA %1, &%0"); |
| 503 #line 444 "msp430-decode.opc" |
| 504 ID (MSO_mov); SR (srcr); DM (dstr, IMMS(2)); |
| 505 msp430->size = 20; |
| 506 msp430->ofs_430x = 1; |
| 507 |
| 508 } |
| 509 break; |
| 510 case 0x80: |
| 511 op_semantics_8: |
| 512 { |
| 513 /** 0000 srcr 1000 dstr MOVA %1, %0 */ |
| 514 #line 449 "msp430-decode.opc" |
| 515 int srcr AU = op[0] & 0x0f; |
| 516 #line 449 "msp430-decode.opc" |
| 517 int dstr AU = op[1] & 0x0f; |
| 518 if (trace) |
| 519 { |
| 520 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 521 "/** 0000 srcr 1000 dstr MOVA %1, %0 */", |
| 522 op[0], op[1]); |
| 523 printf (" srcr = 0x%x,", srcr); |
| 524 printf (" dstr = 0x%x\n", dstr); |
| 525 } |
| 526 SYNTAX("MOVA %1, %0"); |
| 527 #line 449 "msp430-decode.opc" |
| 528 ID (MSO_mov); SC ((srcr << 16) + IMMU(2)); DR (dstr); |
| 529 msp430->size = 20; |
| 530 msp430->ofs_430x = 1; |
| 531 |
| 532 } |
| 533 break; |
| 534 case 0x90: |
| 535 op_semantics_9: |
| 536 { |
| 537 /** 0000 srcr 1001 dstr CMPA %1, %0 */ |
| 538 #line 454 "msp430-decode.opc" |
| 539 int srcr AU = op[0] & 0x0f; |
| 540 #line 454 "msp430-decode.opc" |
| 541 int dstr AU = op[1] & 0x0f; |
| 542 if (trace) |
| 543 { |
| 544 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 545 "/** 0000 srcr 1001 dstr CMPA %1, %0 */", |
| 546 op[0], op[1]); |
| 547 printf (" srcr = 0x%x,", srcr); |
| 548 printf (" dstr = 0x%x\n", dstr); |
| 549 } |
| 550 SYNTAX("CMPA %1, %0"); |
| 551 #line 454 "msp430-decode.opc" |
| 552 ID (MSO_cmp); SC ((srcr << 16) + IMMU(2)); DR (dstr); |
| 553 msp430->size = 20; |
| 554 msp430->ofs_430x = 1; |
| 555 F_VNZC; |
| 556 |
| 557 } |
| 558 break; |
| 559 case 0xa0: |
| 560 op_semantics_10: |
| 561 { |
| 562 /** 0000 srcr 1010 dstr ADDA %1, %0 */ |
| 563 #line 460 "msp430-decode.opc" |
| 564 int srcr AU = op[0] & 0x0f; |
| 565 #line 460 "msp430-decode.opc" |
| 566 int dstr AU = op[1] & 0x0f; |
| 567 if (trace) |
| 568 { |
| 569 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 570 "/** 0000 srcr 1010 dstr ADDA %1, %0 */", |
| 571 op[0], op[1]); |
| 572 printf (" srcr = 0x%x,", srcr); |
| 573 printf (" dstr = 0x%x\n", dstr); |
| 574 } |
| 575 SYNTAX("ADDA %1, %0"); |
| 576 #line 460 "msp430-decode.opc" |
| 577 ID (MSO_add); SC ((srcr << 16) + IMMU(2)); DR (dstr); |
| 578 msp430->size = 20; |
| 579 msp430->ofs_430x = 1; |
| 580 F_VNZC; |
| 581 |
| 582 } |
| 583 break; |
| 584 case 0xb0: |
| 585 op_semantics_11: |
| 586 { |
| 587 /** 0000 srcr 1011 dstr SUBA %1, %0 */ |
| 588 #line 466 "msp430-decode.opc" |
| 589 int srcr AU = op[0] & 0x0f; |
| 590 #line 466 "msp430-decode.opc" |
| 591 int dstr AU = op[1] & 0x0f; |
| 592 if (trace) |
| 593 { |
| 594 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 595 "/** 0000 srcr 1011 dstr SUBA %1, %0 */", |
| 596 op[0], op[1]); |
| 597 printf (" srcr = 0x%x,", srcr); |
| 598 printf (" dstr = 0x%x\n", dstr); |
| 599 } |
| 600 SYNTAX("SUBA %1, %0"); |
| 601 #line 466 "msp430-decode.opc" |
| 602 ID (MSO_sub); SC ((srcr << 16) + IMMU(2)); DR (dstr); |
| 603 msp430->size = 20; |
| 604 msp430->ofs_430x = 1; |
| 605 F_VNZC; |
| 606 |
| 607 } |
| 608 break; |
| 609 case 0xc0: |
| 610 op_semantics_12: |
| 611 { |
| 612 /** 0000 srcr 1100 dstr MOVA %1, %0 */ |
| 613 #line 478 "msp430-decode.opc" |
| 614 int srcr AU = op[0] & 0x0f; |
| 615 #line 478 "msp430-decode.opc" |
| 616 int dstr AU = op[1] & 0x0f; |
| 617 if (trace) |
| 618 { |
| 619 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 620 "/** 0000 srcr 1100 dstr MOVA %1, %0 */", |
| 621 op[0], op[1]); |
| 622 printf (" srcr = 0x%x,", srcr); |
| 623 printf (" dstr = 0x%x\n", dstr); |
| 624 } |
| 625 SYNTAX("MOVA %1, %0"); |
| 626 #line 478 "msp430-decode.opc" |
| 627 ID (MSO_mov); SR (srcr); DR (dstr); |
| 628 msp430->size = 20; |
| 629 msp430->ofs_430x = 1; |
| 630 |
| 631 } |
| 632 break; |
| 633 case 0xd0: |
| 634 op_semantics_13: |
| 635 { |
| 636 /** 0000 srcr 1101 dstr CMPA %1, %0 */ |
| 637 #line 483 "msp430-decode.opc" |
| 638 int srcr AU = op[0] & 0x0f; |
| 639 #line 483 "msp430-decode.opc" |
| 640 int dstr AU = op[1] & 0x0f; |
| 641 if (trace) |
| 642 { |
| 643 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 644 "/** 0000 srcr 1101 dstr CMPA %1, %0 */", |
| 645 op[0], op[1]); |
| 646 printf (" srcr = 0x%x,", srcr); |
| 647 printf (" dstr = 0x%x\n", dstr); |
| 648 } |
| 649 SYNTAX("CMPA %1, %0"); |
| 650 #line 483 "msp430-decode.opc" |
| 651 ID (MSO_cmp); SR (srcr); DR (dstr); |
| 652 msp430->size = 20; |
| 653 msp430->ofs_430x = 1; |
| 654 F_VNZC; |
| 655 |
| 656 } |
| 657 break; |
| 658 case 0xe0: |
| 659 op_semantics_14: |
| 660 { |
| 661 /** 0000 srcr 1110 dstr ADDA %1, %0 */ |
| 662 #line 489 "msp430-decode.opc" |
| 663 int srcr AU = op[0] & 0x0f; |
| 664 #line 489 "msp430-decode.opc" |
| 665 int dstr AU = op[1] & 0x0f; |
| 666 if (trace) |
| 667 { |
| 668 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 669 "/** 0000 srcr 1110 dstr ADDA %1, %0 */", |
| 670 op[0], op[1]); |
| 671 printf (" srcr = 0x%x,", srcr); |
| 672 printf (" dstr = 0x%x\n", dstr); |
| 673 } |
| 674 SYNTAX("ADDA %1, %0"); |
| 675 #line 489 "msp430-decode.opc" |
| 676 ID (MSO_add); SR (srcr); DR (dstr); |
| 677 msp430->size = 20; |
| 678 msp430->ofs_430x = 1; |
| 679 F_VNZC; |
| 680 |
| 681 } |
| 682 break; |
| 683 case 0xf0: |
| 684 op_semantics_15: |
| 685 { |
| 686 /** 0000 srcr 1111 dstr SUBA %1, %0 */ |
| 687 #line 495 "msp430-decode.opc" |
| 688 int srcr AU = op[0] & 0x0f; |
| 689 #line 495 "msp430-decode.opc" |
| 690 int dstr AU = op[1] & 0x0f; |
| 691 if (trace) |
| 692 { |
| 693 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 694 "/** 0000 srcr 1111 dstr SUBA %1, %0 */", |
| 695 op[0], op[1]); |
| 696 printf (" srcr = 0x%x,", srcr); |
| 697 printf (" dstr = 0x%x\n", dstr); |
| 698 } |
| 699 SYNTAX("SUBA %1, %0"); |
| 700 #line 495 "msp430-decode.opc" |
| 701 ID (MSO_sub); SR (srcr); DR (dstr); |
| 702 msp430->size = 20; |
| 703 msp430->ofs_430x = 1; |
| 704 F_VNZC; |
| 705 |
| 706 } |
| 707 break; |
| 708 } |
| 709 break; |
| 710 case 0x01: |
| 711 GETBYTE (); |
| 712 switch (op[1] & 0xf0) |
| 713 { |
| 714 case 0x00: |
| 715 goto op_semantics_1; |
| 716 break; |
| 717 case 0x10: |
| 718 goto op_semantics_2; |
| 719 break; |
| 720 case 0x20: |
| 721 goto op_semantics_3; |
| 722 break; |
| 723 case 0x30: |
| 724 goto op_semantics_4; |
| 725 break; |
| 726 case 0x40: |
| 727 case 0x50: |
| 728 op_semantics_16: |
| 729 { |
| 730 /** 0000 bt01 010w dstr RRAM.A %c, %0 */ |
| 731 #line 508 "msp430-decode.opc" |
| 732 int bt AU = (op[0] >> 2) & 0x03; |
| 733 #line 508 "msp430-decode.opc" |
| 734 int w AU = (op[1] >> 4) & 0x01; |
| 735 #line 508 "msp430-decode.opc" |
| 736 int dstr AU = op[1] & 0x0f; |
| 737 if (trace) |
| 738 { |
| 739 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 740 "/** 0000 bt01 010w dstr RRAM.A %c, %0 */
", |
| 741 op[0], op[1]); |
| 742 printf (" bt = 0x%x,", bt); |
| 743 printf (" w = 0x%x,", w); |
| 744 printf (" dstr = 0x%x\n", dstr); |
| 745 } |
| 746 SYNTAX("RRAM.A %c, %0"); |
| 747 #line 508 "msp430-decode.opc" |
| 748 ID (MSO_rra); DR (dstr); SR (dstr); |
| 749 msp430->repeats = bt; |
| 750 msp430->size = w ? 16 : 20; |
| 751 msp430->ofs_430x = 1; |
| 752 F_0NZC; |
| 753 |
| 754 } |
| 755 break; |
| 756 case 0x60: |
| 757 goto op_semantics_6; |
| 758 break; |
| 759 case 0x70: |
| 760 goto op_semantics_7; |
| 761 break; |
| 762 case 0x80: |
| 763 goto op_semantics_8; |
| 764 break; |
| 765 case 0x90: |
| 766 goto op_semantics_9; |
| 767 break; |
| 768 case 0xa0: |
| 769 goto op_semantics_10; |
| 770 break; |
| 771 case 0xb0: |
| 772 goto op_semantics_11; |
| 773 break; |
| 774 case 0xc0: |
| 775 goto op_semantics_12; |
| 776 break; |
| 777 case 0xd0: |
| 778 goto op_semantics_13; |
| 779 break; |
| 780 case 0xe0: |
| 781 goto op_semantics_14; |
| 782 break; |
| 783 case 0xf0: |
| 784 goto op_semantics_15; |
| 785 break; |
| 786 } |
| 787 break; |
| 788 case 0x02: |
| 789 GETBYTE (); |
| 790 switch (op[1] & 0xf0) |
| 791 { |
| 792 case 0x00: |
| 793 goto op_semantics_1; |
| 794 break; |
| 795 case 0x10: |
| 796 goto op_semantics_2; |
| 797 break; |
| 798 case 0x20: |
| 799 goto op_semantics_3; |
| 800 break; |
| 801 case 0x30: |
| 802 goto op_semantics_4; |
| 803 break; |
| 804 case 0x40: |
| 805 case 0x50: |
| 806 op_semantics_17: |
| 807 { |
| 808 /** 0000 bt10 010w dstr RLAM.A %c, %0 */ |
| 809 #line 515 "msp430-decode.opc" |
| 810 int bt AU = (op[0] >> 2) & 0x03; |
| 811 #line 515 "msp430-decode.opc" |
| 812 int w AU = (op[1] >> 4) & 0x01; |
| 813 #line 515 "msp430-decode.opc" |
| 814 int dstr AU = op[1] & 0x0f; |
| 815 if (trace) |
| 816 { |
| 817 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 818 "/** 0000 bt10 010w dstr RLAM.A %c, %0 */
", |
| 819 op[0], op[1]); |
| 820 printf (" bt = 0x%x,", bt); |
| 821 printf (" w = 0x%x,", w); |
| 822 printf (" dstr = 0x%x\n", dstr); |
| 823 } |
| 824 SYNTAX("RLAM.A %c, %0"); |
| 825 #line 515 "msp430-decode.opc" |
| 826 ID (MSO_add); DR (dstr); SR (dstr); |
| 827 msp430->repeats = bt; |
| 828 msp430->size = w ? 16 : 20; |
| 829 msp430->ofs_430x = 1; |
| 830 F_0NZC; |
| 831 |
| 832 } |
| 833 break; |
| 834 case 0x60: |
| 835 goto op_semantics_6; |
| 836 break; |
| 837 case 0x70: |
| 838 goto op_semantics_7; |
| 839 break; |
| 840 case 0x80: |
| 841 goto op_semantics_8; |
| 842 break; |
| 843 case 0x90: |
| 844 goto op_semantics_9; |
| 845 break; |
| 846 case 0xa0: |
| 847 goto op_semantics_10; |
| 848 break; |
| 849 case 0xb0: |
| 850 goto op_semantics_11; |
| 851 break; |
| 852 case 0xc0: |
| 853 goto op_semantics_12; |
| 854 break; |
| 855 case 0xd0: |
| 856 goto op_semantics_13; |
| 857 break; |
| 858 case 0xe0: |
| 859 goto op_semantics_14; |
| 860 break; |
| 861 case 0xf0: |
| 862 goto op_semantics_15; |
| 863 break; |
| 864 } |
| 865 break; |
| 866 case 0x03: |
| 867 GETBYTE (); |
| 868 switch (op[1] & 0xf0) |
| 869 { |
| 870 case 0x00: |
| 871 goto op_semantics_1; |
| 872 break; |
| 873 case 0x10: |
| 874 goto op_semantics_2; |
| 875 break; |
| 876 case 0x20: |
| 877 goto op_semantics_3; |
| 878 break; |
| 879 case 0x30: |
| 880 goto op_semantics_4; |
| 881 break; |
| 882 case 0x40: |
| 883 case 0x50: |
| 884 op_semantics_18: |
| 885 { |
| 886 /** 0000 bt11 010w dstr RRUM.A %c, %0 */ |
| 887 #line 522 "msp430-decode.opc" |
| 888 int bt AU = (op[0] >> 2) & 0x03; |
| 889 #line 522 "msp430-decode.opc" |
| 890 int w AU = (op[1] >> 4) & 0x01; |
| 891 #line 522 "msp430-decode.opc" |
| 892 int dstr AU = op[1] & 0x0f; |
| 893 if (trace) |
| 894 { |
| 895 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 896 "/** 0000 bt11 010w dstr RRUM.A %c, %0 */
", |
| 897 op[0], op[1]); |
| 898 printf (" bt = 0x%x,", bt); |
| 899 printf (" w = 0x%x,", w); |
| 900 printf (" dstr = 0x%x\n", dstr); |
| 901 } |
| 902 SYNTAX("RRUM.A %c, %0"); |
| 903 #line 522 "msp430-decode.opc" |
| 904 ID (MSO_rru); DR (dstr); SR (dstr); |
| 905 msp430->repeats = bt; |
| 906 msp430->size = w ? 16 : 20; |
| 907 msp430->ofs_430x = 1; |
| 908 F_0NZC; |
| 909 |
| 910 } |
| 911 break; |
| 912 case 0x60: |
| 913 goto op_semantics_6; |
| 914 break; |
| 915 case 0x70: |
| 916 goto op_semantics_7; |
| 917 break; |
| 918 case 0x80: |
| 919 goto op_semantics_8; |
| 920 break; |
| 921 case 0x90: |
| 922 goto op_semantics_9; |
| 923 break; |
| 924 case 0xa0: |
| 925 goto op_semantics_10; |
| 926 break; |
| 927 case 0xb0: |
| 928 goto op_semantics_11; |
| 929 break; |
| 930 case 0xc0: |
| 931 goto op_semantics_12; |
| 932 break; |
| 933 case 0xd0: |
| 934 goto op_semantics_13; |
| 935 break; |
| 936 case 0xe0: |
| 937 goto op_semantics_14; |
| 938 break; |
| 939 case 0xf0: |
| 940 goto op_semantics_15; |
| 941 break; |
| 942 } |
| 943 break; |
| 944 case 0x04: |
| 945 GETBYTE (); |
| 946 switch (op[1] & 0xf0) |
| 947 { |
| 948 case 0x00: |
| 949 goto op_semantics_1; |
| 950 break; |
| 951 case 0x10: |
| 952 goto op_semantics_2; |
| 953 break; |
| 954 case 0x20: |
| 955 goto op_semantics_3; |
| 956 break; |
| 957 case 0x30: |
| 958 goto op_semantics_4; |
| 959 break; |
| 960 case 0x40: |
| 961 case 0x50: |
| 962 goto op_semantics_5; |
| 963 break; |
| 964 case 0x60: |
| 965 goto op_semantics_6; |
| 966 break; |
| 967 case 0x70: |
| 968 goto op_semantics_7; |
| 969 break; |
| 970 case 0x80: |
| 971 goto op_semantics_8; |
| 972 break; |
| 973 case 0x90: |
| 974 goto op_semantics_9; |
| 975 break; |
| 976 case 0xa0: |
| 977 goto op_semantics_10; |
| 978 break; |
| 979 case 0xb0: |
| 980 goto op_semantics_11; |
| 981 break; |
| 982 case 0xc0: |
| 983 goto op_semantics_12; |
| 984 break; |
| 985 case 0xd0: |
| 986 goto op_semantics_13; |
| 987 break; |
| 988 case 0xe0: |
| 989 goto op_semantics_14; |
| 990 break; |
| 991 case 0xf0: |
| 992 goto op_semantics_15; |
| 993 break; |
| 994 } |
| 995 break; |
| 996 case 0x05: |
| 997 GETBYTE (); |
| 998 switch (op[1] & 0xf0) |
| 999 { |
| 1000 case 0x00: |
| 1001 goto op_semantics_1; |
| 1002 break; |
| 1003 case 0x10: |
| 1004 goto op_semantics_2; |
| 1005 break; |
| 1006 case 0x20: |
| 1007 goto op_semantics_3; |
| 1008 break; |
| 1009 case 0x30: |
| 1010 goto op_semantics_4; |
| 1011 break; |
| 1012 case 0x40: |
| 1013 case 0x50: |
| 1014 goto op_semantics_16; |
| 1015 break; |
| 1016 case 0x60: |
| 1017 goto op_semantics_6; |
| 1018 break; |
| 1019 case 0x70: |
| 1020 goto op_semantics_7; |
| 1021 break; |
| 1022 case 0x80: |
| 1023 goto op_semantics_8; |
| 1024 break; |
| 1025 case 0x90: |
| 1026 goto op_semantics_9; |
| 1027 break; |
| 1028 case 0xa0: |
| 1029 goto op_semantics_10; |
| 1030 break; |
| 1031 case 0xb0: |
| 1032 goto op_semantics_11; |
| 1033 break; |
| 1034 case 0xc0: |
| 1035 goto op_semantics_12; |
| 1036 break; |
| 1037 case 0xd0: |
| 1038 goto op_semantics_13; |
| 1039 break; |
| 1040 case 0xe0: |
| 1041 goto op_semantics_14; |
| 1042 break; |
| 1043 case 0xf0: |
| 1044 goto op_semantics_15; |
| 1045 break; |
| 1046 } |
| 1047 break; |
| 1048 case 0x06: |
| 1049 GETBYTE (); |
| 1050 switch (op[1] & 0xf0) |
| 1051 { |
| 1052 case 0x00: |
| 1053 goto op_semantics_1; |
| 1054 break; |
| 1055 case 0x10: |
| 1056 goto op_semantics_2; |
| 1057 break; |
| 1058 case 0x20: |
| 1059 goto op_semantics_3; |
| 1060 break; |
| 1061 case 0x30: |
| 1062 goto op_semantics_4; |
| 1063 break; |
| 1064 case 0x40: |
| 1065 case 0x50: |
| 1066 goto op_semantics_17; |
| 1067 break; |
| 1068 case 0x60: |
| 1069 goto op_semantics_6; |
| 1070 break; |
| 1071 case 0x70: |
| 1072 goto op_semantics_7; |
| 1073 break; |
| 1074 case 0x80: |
| 1075 goto op_semantics_8; |
| 1076 break; |
| 1077 case 0x90: |
| 1078 goto op_semantics_9; |
| 1079 break; |
| 1080 case 0xa0: |
| 1081 goto op_semantics_10; |
| 1082 break; |
| 1083 case 0xb0: |
| 1084 goto op_semantics_11; |
| 1085 break; |
| 1086 case 0xc0: |
| 1087 goto op_semantics_12; |
| 1088 break; |
| 1089 case 0xd0: |
| 1090 goto op_semantics_13; |
| 1091 break; |
| 1092 case 0xe0: |
| 1093 goto op_semantics_14; |
| 1094 break; |
| 1095 case 0xf0: |
| 1096 goto op_semantics_15; |
| 1097 break; |
| 1098 } |
| 1099 break; |
| 1100 case 0x07: |
| 1101 GETBYTE (); |
| 1102 switch (op[1] & 0xf0) |
| 1103 { |
| 1104 case 0x00: |
| 1105 goto op_semantics_1; |
| 1106 break; |
| 1107 case 0x10: |
| 1108 goto op_semantics_2; |
| 1109 break; |
| 1110 case 0x20: |
| 1111 goto op_semantics_3; |
| 1112 break; |
| 1113 case 0x30: |
| 1114 goto op_semantics_4; |
| 1115 break; |
| 1116 case 0x40: |
| 1117 case 0x50: |
| 1118 goto op_semantics_18; |
| 1119 break; |
| 1120 case 0x60: |
| 1121 goto op_semantics_6; |
| 1122 break; |
| 1123 case 0x70: |
| 1124 goto op_semantics_7; |
| 1125 break; |
| 1126 case 0x80: |
| 1127 goto op_semantics_8; |
| 1128 break; |
| 1129 case 0x90: |
| 1130 goto op_semantics_9; |
| 1131 break; |
| 1132 case 0xa0: |
| 1133 goto op_semantics_10; |
| 1134 break; |
| 1135 case 0xb0: |
| 1136 goto op_semantics_11; |
| 1137 break; |
| 1138 case 0xc0: |
| 1139 goto op_semantics_12; |
| 1140 break; |
| 1141 case 0xd0: |
| 1142 goto op_semantics_13; |
| 1143 break; |
| 1144 case 0xe0: |
| 1145 goto op_semantics_14; |
| 1146 break; |
| 1147 case 0xf0: |
| 1148 goto op_semantics_15; |
| 1149 break; |
| 1150 } |
| 1151 break; |
| 1152 case 0x08: |
| 1153 GETBYTE (); |
| 1154 switch (op[1] & 0xf0) |
| 1155 { |
| 1156 case 0x00: |
| 1157 goto op_semantics_1; |
| 1158 break; |
| 1159 case 0x10: |
| 1160 goto op_semantics_2; |
| 1161 break; |
| 1162 case 0x20: |
| 1163 goto op_semantics_3; |
| 1164 break; |
| 1165 case 0x30: |
| 1166 goto op_semantics_4; |
| 1167 break; |
| 1168 case 0x40: |
| 1169 case 0x50: |
| 1170 goto op_semantics_5; |
| 1171 break; |
| 1172 case 0x60: |
| 1173 goto op_semantics_6; |
| 1174 break; |
| 1175 case 0x70: |
| 1176 goto op_semantics_7; |
| 1177 break; |
| 1178 case 0x80: |
| 1179 goto op_semantics_8; |
| 1180 break; |
| 1181 case 0x90: |
| 1182 goto op_semantics_9; |
| 1183 break; |
| 1184 case 0xa0: |
| 1185 goto op_semantics_10; |
| 1186 break; |
| 1187 case 0xb0: |
| 1188 goto op_semantics_11; |
| 1189 break; |
| 1190 case 0xc0: |
| 1191 goto op_semantics_12; |
| 1192 break; |
| 1193 case 0xd0: |
| 1194 goto op_semantics_13; |
| 1195 break; |
| 1196 case 0xe0: |
| 1197 goto op_semantics_14; |
| 1198 break; |
| 1199 case 0xf0: |
| 1200 goto op_semantics_15; |
| 1201 break; |
| 1202 } |
| 1203 break; |
| 1204 case 0x09: |
| 1205 GETBYTE (); |
| 1206 switch (op[1] & 0xf0) |
| 1207 { |
| 1208 case 0x00: |
| 1209 goto op_semantics_1; |
| 1210 break; |
| 1211 case 0x10: |
| 1212 goto op_semantics_2; |
| 1213 break; |
| 1214 case 0x20: |
| 1215 goto op_semantics_3; |
| 1216 break; |
| 1217 case 0x30: |
| 1218 goto op_semantics_4; |
| 1219 break; |
| 1220 case 0x40: |
| 1221 case 0x50: |
| 1222 goto op_semantics_16; |
| 1223 break; |
| 1224 case 0x60: |
| 1225 goto op_semantics_6; |
| 1226 break; |
| 1227 case 0x70: |
| 1228 goto op_semantics_7; |
| 1229 break; |
| 1230 case 0x80: |
| 1231 goto op_semantics_8; |
| 1232 break; |
| 1233 case 0x90: |
| 1234 goto op_semantics_9; |
| 1235 break; |
| 1236 case 0xa0: |
| 1237 goto op_semantics_10; |
| 1238 break; |
| 1239 case 0xb0: |
| 1240 goto op_semantics_11; |
| 1241 break; |
| 1242 case 0xc0: |
| 1243 goto op_semantics_12; |
| 1244 break; |
| 1245 case 0xd0: |
| 1246 goto op_semantics_13; |
| 1247 break; |
| 1248 case 0xe0: |
| 1249 goto op_semantics_14; |
| 1250 break; |
| 1251 case 0xf0: |
| 1252 goto op_semantics_15; |
| 1253 break; |
| 1254 } |
| 1255 break; |
| 1256 case 0x0a: |
| 1257 GETBYTE (); |
| 1258 switch (op[1] & 0xf0) |
| 1259 { |
| 1260 case 0x00: |
| 1261 goto op_semantics_1; |
| 1262 break; |
| 1263 case 0x10: |
| 1264 goto op_semantics_2; |
| 1265 break; |
| 1266 case 0x20: |
| 1267 goto op_semantics_3; |
| 1268 break; |
| 1269 case 0x30: |
| 1270 goto op_semantics_4; |
| 1271 break; |
| 1272 case 0x40: |
| 1273 case 0x50: |
| 1274 goto op_semantics_17; |
| 1275 break; |
| 1276 case 0x60: |
| 1277 goto op_semantics_6; |
| 1278 break; |
| 1279 case 0x70: |
| 1280 goto op_semantics_7; |
| 1281 break; |
| 1282 case 0x80: |
| 1283 goto op_semantics_8; |
| 1284 break; |
| 1285 case 0x90: |
| 1286 goto op_semantics_9; |
| 1287 break; |
| 1288 case 0xa0: |
| 1289 goto op_semantics_10; |
| 1290 break; |
| 1291 case 0xb0: |
| 1292 goto op_semantics_11; |
| 1293 break; |
| 1294 case 0xc0: |
| 1295 goto op_semantics_12; |
| 1296 break; |
| 1297 case 0xd0: |
| 1298 goto op_semantics_13; |
| 1299 break; |
| 1300 case 0xe0: |
| 1301 goto op_semantics_14; |
| 1302 break; |
| 1303 case 0xf0: |
| 1304 goto op_semantics_15; |
| 1305 break; |
| 1306 } |
| 1307 break; |
| 1308 case 0x0b: |
| 1309 GETBYTE (); |
| 1310 switch (op[1] & 0xf0) |
| 1311 { |
| 1312 case 0x00: |
| 1313 goto op_semantics_1; |
| 1314 break; |
| 1315 case 0x10: |
| 1316 goto op_semantics_2; |
| 1317 break; |
| 1318 case 0x20: |
| 1319 goto op_semantics_3; |
| 1320 break; |
| 1321 case 0x30: |
| 1322 goto op_semantics_4; |
| 1323 break; |
| 1324 case 0x40: |
| 1325 case 0x50: |
| 1326 goto op_semantics_18; |
| 1327 break; |
| 1328 case 0x60: |
| 1329 goto op_semantics_6; |
| 1330 break; |
| 1331 case 0x70: |
| 1332 goto op_semantics_7; |
| 1333 break; |
| 1334 case 0x80: |
| 1335 goto op_semantics_8; |
| 1336 break; |
| 1337 case 0x90: |
| 1338 goto op_semantics_9; |
| 1339 break; |
| 1340 case 0xa0: |
| 1341 goto op_semantics_10; |
| 1342 break; |
| 1343 case 0xb0: |
| 1344 goto op_semantics_11; |
| 1345 break; |
| 1346 case 0xc0: |
| 1347 goto op_semantics_12; |
| 1348 break; |
| 1349 case 0xd0: |
| 1350 goto op_semantics_13; |
| 1351 break; |
| 1352 case 0xe0: |
| 1353 goto op_semantics_14; |
| 1354 break; |
| 1355 case 0xf0: |
| 1356 goto op_semantics_15; |
| 1357 break; |
| 1358 } |
| 1359 break; |
| 1360 case 0x0c: |
| 1361 GETBYTE (); |
| 1362 switch (op[1] & 0xf0) |
| 1363 { |
| 1364 case 0x00: |
| 1365 goto op_semantics_1; |
| 1366 break; |
| 1367 case 0x10: |
| 1368 goto op_semantics_2; |
| 1369 break; |
| 1370 case 0x20: |
| 1371 goto op_semantics_3; |
| 1372 break; |
| 1373 case 0x30: |
| 1374 goto op_semantics_4; |
| 1375 break; |
| 1376 case 0x40: |
| 1377 case 0x50: |
| 1378 goto op_semantics_5; |
| 1379 break; |
| 1380 case 0x60: |
| 1381 goto op_semantics_6; |
| 1382 break; |
| 1383 case 0x70: |
| 1384 goto op_semantics_7; |
| 1385 break; |
| 1386 case 0x80: |
| 1387 goto op_semantics_8; |
| 1388 break; |
| 1389 case 0x90: |
| 1390 goto op_semantics_9; |
| 1391 break; |
| 1392 case 0xa0: |
| 1393 goto op_semantics_10; |
| 1394 break; |
| 1395 case 0xb0: |
| 1396 goto op_semantics_11; |
| 1397 break; |
| 1398 case 0xc0: |
| 1399 goto op_semantics_12; |
| 1400 break; |
| 1401 case 0xd0: |
| 1402 goto op_semantics_13; |
| 1403 break; |
| 1404 case 0xe0: |
| 1405 goto op_semantics_14; |
| 1406 break; |
| 1407 case 0xf0: |
| 1408 goto op_semantics_15; |
| 1409 break; |
| 1410 } |
| 1411 break; |
| 1412 case 0x0d: |
| 1413 GETBYTE (); |
| 1414 switch (op[1] & 0xf0) |
| 1415 { |
| 1416 case 0x00: |
| 1417 goto op_semantics_1; |
| 1418 break; |
| 1419 case 0x10: |
| 1420 goto op_semantics_2; |
| 1421 break; |
| 1422 case 0x20: |
| 1423 goto op_semantics_3; |
| 1424 break; |
| 1425 case 0x30: |
| 1426 goto op_semantics_4; |
| 1427 break; |
| 1428 case 0x40: |
| 1429 case 0x50: |
| 1430 goto op_semantics_16; |
| 1431 break; |
| 1432 case 0x60: |
| 1433 goto op_semantics_6; |
| 1434 break; |
| 1435 case 0x70: |
| 1436 goto op_semantics_7; |
| 1437 break; |
| 1438 case 0x80: |
| 1439 goto op_semantics_8; |
| 1440 break; |
| 1441 case 0x90: |
| 1442 goto op_semantics_9; |
| 1443 break; |
| 1444 case 0xa0: |
| 1445 goto op_semantics_10; |
| 1446 break; |
| 1447 case 0xb0: |
| 1448 goto op_semantics_11; |
| 1449 break; |
| 1450 case 0xc0: |
| 1451 goto op_semantics_12; |
| 1452 break; |
| 1453 case 0xd0: |
| 1454 goto op_semantics_13; |
| 1455 break; |
| 1456 case 0xe0: |
| 1457 goto op_semantics_14; |
| 1458 break; |
| 1459 case 0xf0: |
| 1460 goto op_semantics_15; |
| 1461 break; |
| 1462 } |
| 1463 break; |
| 1464 case 0x0e: |
| 1465 GETBYTE (); |
| 1466 switch (op[1] & 0xf0) |
| 1467 { |
| 1468 case 0x00: |
| 1469 goto op_semantics_1; |
| 1470 break; |
| 1471 case 0x10: |
| 1472 goto op_semantics_2; |
| 1473 break; |
| 1474 case 0x20: |
| 1475 goto op_semantics_3; |
| 1476 break; |
| 1477 case 0x30: |
| 1478 goto op_semantics_4; |
| 1479 break; |
| 1480 case 0x40: |
| 1481 case 0x50: |
| 1482 goto op_semantics_17; |
| 1483 break; |
| 1484 case 0x60: |
| 1485 goto op_semantics_6; |
| 1486 break; |
| 1487 case 0x70: |
| 1488 goto op_semantics_7; |
| 1489 break; |
| 1490 case 0x80: |
| 1491 goto op_semantics_8; |
| 1492 break; |
| 1493 case 0x90: |
| 1494 goto op_semantics_9; |
| 1495 break; |
| 1496 case 0xa0: |
| 1497 goto op_semantics_10; |
| 1498 break; |
| 1499 case 0xb0: |
| 1500 goto op_semantics_11; |
| 1501 break; |
| 1502 case 0xc0: |
| 1503 goto op_semantics_12; |
| 1504 break; |
| 1505 case 0xd0: |
| 1506 goto op_semantics_13; |
| 1507 break; |
| 1508 case 0xe0: |
| 1509 goto op_semantics_14; |
| 1510 break; |
| 1511 case 0xf0: |
| 1512 goto op_semantics_15; |
| 1513 break; |
| 1514 } |
| 1515 break; |
| 1516 case 0x0f: |
| 1517 GETBYTE (); |
| 1518 switch (op[1] & 0xf0) |
| 1519 { |
| 1520 case 0x00: |
| 1521 goto op_semantics_1; |
| 1522 break; |
| 1523 case 0x10: |
| 1524 goto op_semantics_2; |
| 1525 break; |
| 1526 case 0x20: |
| 1527 goto op_semantics_3; |
| 1528 break; |
| 1529 case 0x30: |
| 1530 goto op_semantics_4; |
| 1531 break; |
| 1532 case 0x40: |
| 1533 case 0x50: |
| 1534 goto op_semantics_18; |
| 1535 break; |
| 1536 case 0x60: |
| 1537 goto op_semantics_6; |
| 1538 break; |
| 1539 case 0x70: |
| 1540 goto op_semantics_7; |
| 1541 break; |
| 1542 case 0x80: |
| 1543 goto op_semantics_8; |
| 1544 break; |
| 1545 case 0x90: |
| 1546 goto op_semantics_9; |
| 1547 break; |
| 1548 case 0xa0: |
| 1549 goto op_semantics_10; |
| 1550 break; |
| 1551 case 0xb0: |
| 1552 goto op_semantics_11; |
| 1553 break; |
| 1554 case 0xc0: |
| 1555 goto op_semantics_12; |
| 1556 break; |
| 1557 case 0xd0: |
| 1558 goto op_semantics_13; |
| 1559 break; |
| 1560 case 0xe0: |
| 1561 goto op_semantics_14; |
| 1562 break; |
| 1563 case 0xf0: |
| 1564 goto op_semantics_15; |
| 1565 break; |
| 1566 } |
| 1567 break; |
| 1568 case 0x10: |
| 1569 GETBYTE (); |
| 1570 switch (op[1] & 0x00) |
| 1571 { |
| 1572 case 0x00: |
| 1573 op_semantics_19: |
| 1574 { |
| 1575 /** 0001 00so c b ad dreg %S%b %1
*/ |
| 1576 #line 375 "msp430-decode.opc" |
| 1577 int so AU = op[0] & 0x03; |
| 1578 #line 375 "msp430-decode.opc" |
| 1579 int c AU = (op[1] >> 7) & 0x01; |
| 1580 #line 375 "msp430-decode.opc" |
| 1581 int b AU = (op[1] >> 6) & 0x01; |
| 1582 #line 375 "msp430-decode.opc" |
| 1583 int ad AU = (op[1] >> 4) & 0x03; |
| 1584 #line 375 "msp430-decode.opc" |
| 1585 int dreg AU = op[1] & 0x0f; |
| 1586 if (trace) |
| 1587 { |
| 1588 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 1589 "/** 0001 00so c b ad dreg %S%b %1
*/", |
| 1590 op[0], op[1]); |
| 1591 printf (" so = 0x%x,", so); |
| 1592 printf (" c = 0x%x,", c); |
| 1593 printf (" b = 0x%x,", b); |
| 1594 printf (" ad = 0x%x,", ad); |
| 1595 printf (" dreg = 0x%x\n", dreg); |
| 1596 } |
| 1597 SYNTAX("%S%b %1"); |
| 1598 #line 375 "msp430-decode.opc" |
| 1599 |
| 1600 ID (sopc_to_id (so,c)); ASX (dreg, ad, srxt_bits); ABW (al_bit,
b); |
| 1601 |
| 1602 if (ad == 0) |
| 1603 REPZC (srxt_bits, dsxt_bits); |
| 1604 |
| 1605 /* the helper functions encode for source, but it's both source
and |
| 1606 dest, with a few documented exceptions. */ |
| 1607 msp430->op[0] = msp430->op[1]; |
| 1608 |
| 1609 /* RETI ignores the operand */ |
| 1610 if (msp430->id == MSO_reti) |
| 1611 msp430->syntax = "%S"; |
| 1612 |
| 1613 switch (msp430->id) |
| 1614 { |
| 1615 case MSO_rrc: F_VNZC; break; |
| 1616 case MSO_swpb: F_____; break; |
| 1617 case MSO_rra: F_0NZC; break; |
| 1618 case MSO_sxt: F_0NZC; break; |
| 1619 case MSO_push: F_____; break; |
| 1620 case MSO_call: F_____; break; |
| 1621 case MSO_reti: F_VNZC; break; |
| 1622 default: break; |
| 1623 } |
| 1624 |
| 1625 /* 20xx 0010 0000 ---- ---- |
| 1626 3cxx 0011 1100 ---- ---- |
| 1627 001j mp-- ---- ---- */ |
| 1628 } |
| 1629 break; |
| 1630 } |
| 1631 break; |
| 1632 case 0x11: |
| 1633 GETBYTE (); |
| 1634 switch (op[1] & 0x00) |
| 1635 { |
| 1636 case 0x00: |
| 1637 goto op_semantics_19; |
| 1638 break; |
| 1639 } |
| 1640 break; |
| 1641 case 0x12: |
| 1642 GETBYTE (); |
| 1643 switch (op[1] & 0x00) |
| 1644 { |
| 1645 case 0x00: |
| 1646 goto op_semantics_19; |
| 1647 break; |
| 1648 } |
| 1649 break; |
| 1650 case 0x13: |
| 1651 GETBYTE (); |
| 1652 switch (op[1] & 0xff) |
| 1653 { |
| 1654 case 0x00: |
| 1655 { |
| 1656 /** 0001 0011 0000 0000 RETI */ |
| 1657 if (trace) |
| 1658 { |
| 1659 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 1660 "/** 0001 0011 0000 0000 RETI */", |
| 1661 op[0], op[1]); |
| 1662 } |
| 1663 SYNTAX("RETI"); |
| 1664 #line 529 "msp430-decode.opc" |
| 1665 ID (MSO_reti); |
| 1666 msp430->size = 20; |
| 1667 msp430->ofs_430x = 1; |
| 1668 |
| 1669 } |
| 1670 break; |
| 1671 case 0x01: |
| 1672 case 0x02: |
| 1673 case 0x03: |
| 1674 case 0x04: |
| 1675 case 0x05: |
| 1676 case 0x06: |
| 1677 case 0x07: |
| 1678 case 0x08: |
| 1679 case 0x09: |
| 1680 case 0x0a: |
| 1681 case 0x0b: |
| 1682 case 0x0c: |
| 1683 case 0x0d: |
| 1684 case 0x0e: |
| 1685 case 0x0f: |
| 1686 case 0x10: |
| 1687 case 0x11: |
| 1688 case 0x12: |
| 1689 case 0x13: |
| 1690 case 0x14: |
| 1691 case 0x15: |
| 1692 case 0x16: |
| 1693 case 0x17: |
| 1694 case 0x18: |
| 1695 case 0x19: |
| 1696 case 0x1a: |
| 1697 case 0x1b: |
| 1698 case 0x1c: |
| 1699 case 0x1d: |
| 1700 case 0x1e: |
| 1701 case 0x1f: |
| 1702 case 0x20: |
| 1703 case 0x21: |
| 1704 case 0x22: |
| 1705 case 0x23: |
| 1706 case 0x24: |
| 1707 case 0x25: |
| 1708 case 0x26: |
| 1709 case 0x27: |
| 1710 case 0x28: |
| 1711 case 0x29: |
| 1712 case 0x2a: |
| 1713 case 0x2b: |
| 1714 case 0x2c: |
| 1715 case 0x2d: |
| 1716 case 0x2e: |
| 1717 case 0x2f: |
| 1718 case 0x30: |
| 1719 case 0x31: |
| 1720 case 0x32: |
| 1721 case 0x33: |
| 1722 case 0x34: |
| 1723 case 0x35: |
| 1724 case 0x36: |
| 1725 case 0x37: |
| 1726 case 0x38: |
| 1727 case 0x39: |
| 1728 case 0x3a: |
| 1729 case 0x3b: |
| 1730 case 0x3c: |
| 1731 case 0x3d: |
| 1732 case 0x3e: |
| 1733 case 0x3f: |
| 1734 case 0xa0: |
| 1735 case 0xa1: |
| 1736 case 0xa2: |
| 1737 case 0xa3: |
| 1738 case 0xa4: |
| 1739 case 0xa5: |
| 1740 case 0xa6: |
| 1741 case 0xa7: |
| 1742 case 0xa8: |
| 1743 case 0xa9: |
| 1744 case 0xaa: |
| 1745 case 0xab: |
| 1746 case 0xac: |
| 1747 case 0xad: |
| 1748 case 0xae: |
| 1749 case 0xaf: |
| 1750 case 0xc0: |
| 1751 case 0xc1: |
| 1752 case 0xc2: |
| 1753 case 0xc3: |
| 1754 case 0xc4: |
| 1755 case 0xc5: |
| 1756 case 0xc6: |
| 1757 case 0xc7: |
| 1758 case 0xc8: |
| 1759 case 0xc9: |
| 1760 case 0xca: |
| 1761 case 0xcb: |
| 1762 case 0xcc: |
| 1763 case 0xcd: |
| 1764 case 0xce: |
| 1765 case 0xcf: |
| 1766 case 0xd0: |
| 1767 case 0xd1: |
| 1768 case 0xd2: |
| 1769 case 0xd3: |
| 1770 case 0xd4: |
| 1771 case 0xd5: |
| 1772 case 0xd6: |
| 1773 case 0xd7: |
| 1774 case 0xd8: |
| 1775 case 0xd9: |
| 1776 case 0xda: |
| 1777 case 0xdb: |
| 1778 case 0xdc: |
| 1779 case 0xdd: |
| 1780 case 0xde: |
| 1781 case 0xdf: |
| 1782 case 0xe0: |
| 1783 case 0xe1: |
| 1784 case 0xe2: |
| 1785 case 0xe3: |
| 1786 case 0xe4: |
| 1787 case 0xe5: |
| 1788 case 0xe6: |
| 1789 case 0xe7: |
| 1790 case 0xe8: |
| 1791 case 0xe9: |
| 1792 case 0xea: |
| 1793 case 0xeb: |
| 1794 case 0xec: |
| 1795 case 0xed: |
| 1796 case 0xee: |
| 1797 case 0xef: |
| 1798 case 0xf0: |
| 1799 case 0xf1: |
| 1800 case 0xf2: |
| 1801 case 0xf3: |
| 1802 case 0xf4: |
| 1803 case 0xf5: |
| 1804 case 0xf6: |
| 1805 case 0xf7: |
| 1806 case 0xf8: |
| 1807 case 0xf9: |
| 1808 case 0xfa: |
| 1809 case 0xfb: |
| 1810 case 0xfc: |
| 1811 case 0xfd: |
| 1812 case 0xfe: |
| 1813 case 0xff: |
| 1814 goto op_semantics_19; |
| 1815 break; |
| 1816 case 0x40: |
| 1817 case 0x41: |
| 1818 case 0x42: |
| 1819 case 0x43: |
| 1820 case 0x44: |
| 1821 case 0x45: |
| 1822 case 0x46: |
| 1823 case 0x47: |
| 1824 case 0x48: |
| 1825 case 0x49: |
| 1826 case 0x4a: |
| 1827 case 0x4b: |
| 1828 case 0x4c: |
| 1829 case 0x4d: |
| 1830 case 0x4e: |
| 1831 case 0x4f: |
| 1832 case 0x50: |
| 1833 case 0x51: |
| 1834 case 0x52: |
| 1835 case 0x53: |
| 1836 case 0x54: |
| 1837 case 0x55: |
| 1838 case 0x56: |
| 1839 case 0x57: |
| 1840 case 0x58: |
| 1841 case 0x59: |
| 1842 case 0x5a: |
| 1843 case 0x5b: |
| 1844 case 0x5c: |
| 1845 case 0x5d: |
| 1846 case 0x5e: |
| 1847 case 0x5f: |
| 1848 case 0x60: |
| 1849 case 0x61: |
| 1850 case 0x62: |
| 1851 case 0x63: |
| 1852 case 0x64: |
| 1853 case 0x65: |
| 1854 case 0x66: |
| 1855 case 0x67: |
| 1856 case 0x68: |
| 1857 case 0x69: |
| 1858 case 0x6a: |
| 1859 case 0x6b: |
| 1860 case 0x6c: |
| 1861 case 0x6d: |
| 1862 case 0x6e: |
| 1863 case 0x6f: |
| 1864 case 0x70: |
| 1865 case 0x71: |
| 1866 case 0x72: |
| 1867 case 0x73: |
| 1868 case 0x74: |
| 1869 case 0x75: |
| 1870 case 0x76: |
| 1871 case 0x77: |
| 1872 case 0x78: |
| 1873 case 0x79: |
| 1874 case 0x7a: |
| 1875 case 0x7b: |
| 1876 case 0x7c: |
| 1877 case 0x7d: |
| 1878 case 0x7e: |
| 1879 case 0x7f: |
| 1880 { |
| 1881 /** 0001 0011 01as dstr CALLA %0 */ |
| 1882 #line 534 "msp430-decode.opc" |
| 1883 int as AU = (op[1] >> 4) & 0x03; |
| 1884 #line 534 "msp430-decode.opc" |
| 1885 int dstr AU = op[1] & 0x0f; |
| 1886 if (trace) |
| 1887 { |
| 1888 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 1889 "/** 0001 0011 01as dstr CALLA %0 */", |
| 1890 op[0], op[1]); |
| 1891 printf (" as = 0x%x,", as); |
| 1892 printf (" dstr = 0x%x\n", dstr); |
| 1893 } |
| 1894 SYNTAX("CALLA %0"); |
| 1895 #line 534 "msp430-decode.opc" |
| 1896 ID (MSO_call); AS (dstr, as); |
| 1897 msp430->size = 20; |
| 1898 msp430->ofs_430x = 1; |
| 1899 |
| 1900 } |
| 1901 break; |
| 1902 case 0x80: |
| 1903 case 0x81: |
| 1904 case 0x82: |
| 1905 case 0x83: |
| 1906 case 0x84: |
| 1907 case 0x85: |
| 1908 case 0x86: |
| 1909 case 0x87: |
| 1910 case 0x88: |
| 1911 case 0x89: |
| 1912 case 0x8a: |
| 1913 case 0x8b: |
| 1914 case 0x8c: |
| 1915 case 0x8d: |
| 1916 case 0x8e: |
| 1917 case 0x8f: |
| 1918 { |
| 1919 /** 0001 0011 1000 extb CALLA %0 */ |
| 1920 #line 539 "msp430-decode.opc" |
| 1921 int extb AU = op[1] & 0x0f; |
| 1922 if (trace) |
| 1923 { |
| 1924 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 1925 "/** 0001 0011 1000 extb CALLA %0 */", |
| 1926 op[0], op[1]); |
| 1927 printf (" extb = 0x%x\n", extb); |
| 1928 } |
| 1929 SYNTAX("CALLA %0"); |
| 1930 #line 539 "msp430-decode.opc" |
| 1931 ID (MSO_call); SA (IMMU(2) | (extb << 16)); |
| 1932 msp430->size = 20; |
| 1933 msp430->ofs_430x = 1; |
| 1934 |
| 1935 } |
| 1936 break; |
| 1937 case 0x90: |
| 1938 case 0x91: |
| 1939 case 0x92: |
| 1940 case 0x93: |
| 1941 case 0x94: |
| 1942 case 0x95: |
| 1943 case 0x96: |
| 1944 case 0x97: |
| 1945 case 0x98: |
| 1946 case 0x99: |
| 1947 case 0x9a: |
| 1948 case 0x9b: |
| 1949 case 0x9c: |
| 1950 case 0x9d: |
| 1951 case 0x9e: |
| 1952 case 0x9f: |
| 1953 { |
| 1954 /** 0001 0011 1001 extb CALLA %0 */ |
| 1955 #line 544 "msp430-decode.opc" |
| 1956 int extb AU = op[1] & 0x0f; |
| 1957 if (trace) |
| 1958 { |
| 1959 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 1960 "/** 0001 0011 1001 extb CALLA %0 */", |
| 1961 op[0], op[1]); |
| 1962 printf (" extb = 0x%x\n", extb); |
| 1963 } |
| 1964 SYNTAX("CALLA %0"); |
| 1965 #line 544 "msp430-decode.opc" |
| 1966 raddr = IMMU(2) | (extb << 16); |
| 1967 if (raddr & 0x80000) |
| 1968 raddr -= 0x100000; |
| 1969 ID (MSO_call); SA (pc + raddr + msp430->n_bytes); |
| 1970 msp430->size = 20; |
| 1971 msp430->ofs_430x = 1; |
| 1972 |
| 1973 } |
| 1974 break; |
| 1975 case 0xb0: |
| 1976 case 0xb1: |
| 1977 case 0xb2: |
| 1978 case 0xb3: |
| 1979 case 0xb4: |
| 1980 case 0xb5: |
| 1981 case 0xb6: |
| 1982 case 0xb7: |
| 1983 case 0xb8: |
| 1984 case 0xb9: |
| 1985 case 0xba: |
| 1986 case 0xbb: |
| 1987 case 0xbc: |
| 1988 case 0xbd: |
| 1989 case 0xbe: |
| 1990 case 0xbf: |
| 1991 { |
| 1992 /** 0001 0011 1011 extb CALLA %0 */ |
| 1993 #line 552 "msp430-decode.opc" |
| 1994 int extb AU = op[1] & 0x0f; |
| 1995 if (trace) |
| 1996 { |
| 1997 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 1998 "/** 0001 0011 1011 extb CALLA %0 */", |
| 1999 op[0], op[1]); |
| 2000 printf (" extb = 0x%x\n", extb); |
| 2001 } |
| 2002 SYNTAX("CALLA %0"); |
| 2003 #line 552 "msp430-decode.opc" |
| 2004 ID (MSO_call); SC (IMMU(2) | (extb << 16)); |
| 2005 msp430->size = 20; |
| 2006 msp430->ofs_430x = 1; |
| 2007 |
| 2008 } |
| 2009 break; |
| 2010 } |
| 2011 break; |
| 2012 case 0x14: |
| 2013 GETBYTE (); |
| 2014 switch (op[1] & 0x00) |
| 2015 { |
| 2016 case 0x00: |
| 2017 op_semantics_20: |
| 2018 { |
| 2019 /** 0001 010w bits srcr PUSHM.A %0 */ |
| 2020 #line 557 "msp430-decode.opc" |
| 2021 int w AU = op[0] & 0x01; |
| 2022 #line 557 "msp430-decode.opc" |
| 2023 int bits AU = (op[1] >> 4) & 0x0f; |
| 2024 #line 557 "msp430-decode.opc" |
| 2025 int srcr AU = op[1] & 0x0f; |
| 2026 if (trace) |
| 2027 { |
| 2028 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 2029 "/** 0001 010w bits srcr PUSHM.A %0 */", |
| 2030 op[0], op[1]); |
| 2031 printf (" w = 0x%x,", w); |
| 2032 printf (" bits = 0x%x,", bits); |
| 2033 printf (" srcr = 0x%x\n", srcr); |
| 2034 } |
| 2035 SYNTAX("PUSHM.A %0"); |
| 2036 #line 557 "msp430-decode.opc" |
| 2037 ID (MSO_push); SR (srcr); |
| 2038 msp430->size = w ? 16 : 20; |
| 2039 msp430->repeats = bits; |
| 2040 msp430->ofs_430x = 1; |
| 2041 |
| 2042 } |
| 2043 break; |
| 2044 } |
| 2045 break; |
| 2046 case 0x15: |
| 2047 GETBYTE (); |
| 2048 switch (op[1] & 0x00) |
| 2049 { |
| 2050 case 0x00: |
| 2051 goto op_semantics_20; |
| 2052 break; |
| 2053 } |
| 2054 break; |
| 2055 case 0x16: |
| 2056 GETBYTE (); |
| 2057 switch (op[1] & 0x00) |
| 2058 { |
| 2059 case 0x00: |
| 2060 op_semantics_21: |
| 2061 { |
| 2062 /** 0001 011w bits dstr POPM.A %0 */ |
| 2063 #line 563 "msp430-decode.opc" |
| 2064 int w AU = op[0] & 0x01; |
| 2065 #line 563 "msp430-decode.opc" |
| 2066 int bits AU = (op[1] >> 4) & 0x0f; |
| 2067 #line 563 "msp430-decode.opc" |
| 2068 int dstr AU = op[1] & 0x0f; |
| 2069 if (trace) |
| 2070 { |
| 2071 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 2072 "/** 0001 011w bits dstr POPM.A %0 */", |
| 2073 op[0], op[1]); |
| 2074 printf (" w = 0x%x,", w); |
| 2075 printf (" bits = 0x%x,", bits); |
| 2076 printf (" dstr = 0x%x\n", dstr); |
| 2077 } |
| 2078 SYNTAX("POPM.A %0"); |
| 2079 #line 563 "msp430-decode.opc" |
| 2080 ID (MSO_pop); DR (dstr); |
| 2081 msp430->size = w ? 16 : 20; |
| 2082 msp430->repeats = bits; |
| 2083 msp430->ofs_430x = 1; |
| 2084 |
| 2085 } |
| 2086 break; |
| 2087 } |
| 2088 break; |
| 2089 case 0x17: |
| 2090 GETBYTE (); |
| 2091 switch (op[1] & 0x00) |
| 2092 { |
| 2093 case 0x00: |
| 2094 goto op_semantics_21; |
| 2095 break; |
| 2096 } |
| 2097 break; |
| 2098 case 0x18: |
| 2099 GETBYTE (); |
| 2100 switch (op[1] & 0x30) |
| 2101 { |
| 2102 case 0x00: |
| 2103 op_semantics_22: |
| 2104 { |
| 2105 /** 0001 1srx t l 00 dsxt 430x */ |
| 2106 #line 329 "msp430-decode.opc" |
| 2107 int srx AU = op[0] & 0x07; |
| 2108 #line 329 "msp430-decode.opc" |
| 2109 int t AU = (op[1] >> 7) & 0x01; |
| 2110 #line 329 "msp430-decode.opc" |
| 2111 int l AU = (op[1] >> 6) & 0x01; |
| 2112 #line 329 "msp430-decode.opc" |
| 2113 int dsxt AU = op[1] & 0x0f; |
| 2114 if (trace) |
| 2115 { |
| 2116 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 2117 "/** 0001 1srx t l 00 dsxt 430x */", |
| 2118 op[0], op[1]); |
| 2119 printf (" srx = 0x%x,", srx); |
| 2120 printf (" t = 0x%x,", t); |
| 2121 printf (" l = 0x%x,", l); |
| 2122 printf (" dsxt = 0x%x\n", dsxt); |
| 2123 } |
| 2124 SYNTAX("430x"); |
| 2125 #line 329 "msp430-decode.opc" |
| 2126 |
| 2127 al_bit = l; |
| 2128 srxt_bits = srx * 2 + t; |
| 2129 dsxt_bits = dsxt; |
| 2130 op = op_buf + lds.op_ptr; |
| 2131 msp430->ofs_430x = 1; |
| 2132 goto post_extension_word; |
| 2133 |
| 2134 /* double-op insns: |
| 2135 opcode:4 sreg:4 Ad:1 BW:1 As:2 Dreg:4 |
| 2136 |
| 2137 single-op insn: |
| 2138 opcode:9 BW:1 Ad:2 DSreg:4 |
| 2139 |
| 2140 jumps: |
| 2141 opcode:3 Cond:3 pcrel:10 |
| 2142 |
| 2143 */ |
| 2144 |
| 2145 /* Double-Operand "opcode" fields */ |
| 2146 |
| 2147 } |
| 2148 break; |
| 2149 default: UNSUPPORTED(); break; |
| 2150 } |
| 2151 break; |
| 2152 case 0x19: |
| 2153 GETBYTE (); |
| 2154 switch (op[1] & 0x30) |
| 2155 { |
| 2156 case 0x00: |
| 2157 goto op_semantics_22; |
| 2158 break; |
| 2159 default: UNSUPPORTED(); break; |
| 2160 } |
| 2161 break; |
| 2162 case 0x1a: |
| 2163 GETBYTE (); |
| 2164 switch (op[1] & 0x30) |
| 2165 { |
| 2166 case 0x00: |
| 2167 goto op_semantics_22; |
| 2168 break; |
| 2169 default: UNSUPPORTED(); break; |
| 2170 } |
| 2171 break; |
| 2172 case 0x1b: |
| 2173 GETBYTE (); |
| 2174 switch (op[1] & 0x30) |
| 2175 { |
| 2176 case 0x00: |
| 2177 goto op_semantics_22; |
| 2178 break; |
| 2179 default: UNSUPPORTED(); break; |
| 2180 } |
| 2181 break; |
| 2182 case 0x1c: |
| 2183 GETBYTE (); |
| 2184 switch (op[1] & 0x30) |
| 2185 { |
| 2186 case 0x00: |
| 2187 goto op_semantics_22; |
| 2188 break; |
| 2189 default: UNSUPPORTED(); break; |
| 2190 } |
| 2191 break; |
| 2192 case 0x1d: |
| 2193 GETBYTE (); |
| 2194 switch (op[1] & 0x30) |
| 2195 { |
| 2196 case 0x00: |
| 2197 goto op_semantics_22; |
| 2198 break; |
| 2199 default: UNSUPPORTED(); break; |
| 2200 } |
| 2201 break; |
| 2202 case 0x1e: |
| 2203 GETBYTE (); |
| 2204 switch (op[1] & 0x30) |
| 2205 { |
| 2206 case 0x00: |
| 2207 goto op_semantics_22; |
| 2208 break; |
| 2209 default: UNSUPPORTED(); break; |
| 2210 } |
| 2211 break; |
| 2212 case 0x1f: |
| 2213 GETBYTE (); |
| 2214 switch (op[1] & 0x30) |
| 2215 { |
| 2216 case 0x00: |
| 2217 goto op_semantics_22; |
| 2218 break; |
| 2219 default: UNSUPPORTED(); break; |
| 2220 } |
| 2221 break; |
| 2222 case 0x20: |
| 2223 GETBYTE (); |
| 2224 switch (op[1] & 0x00) |
| 2225 { |
| 2226 case 0x00: |
| 2227 op_semantics_23: |
| 2228 { |
| 2229 /** 001jmp aa addrlsbs %J %1
*/ |
| 2230 #line 405 "msp430-decode.opc" |
| 2231 int jmp AU = (op[0] >> 2) & 0x07; |
| 2232 #line 405 "msp430-decode.opc" |
| 2233 int aa AU = op[0] & 0x03; |
| 2234 #line 405 "msp430-decode.opc" |
| 2235 int addrlsbs AU = op[1]; |
| 2236 if (trace) |
| 2237 { |
| 2238 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 2239 "/** 001jmp aa addrlsbs %J %1
*/", |
| 2240 op[0], op[1]); |
| 2241 printf (" jmp = 0x%x,", jmp); |
| 2242 printf (" aa = 0x%x,", aa); |
| 2243 printf (" addrlsbs = 0x%x\n", addrlsbs); |
| 2244 } |
| 2245 SYNTAX("%J %1"); |
| 2246 #line 405 "msp430-decode.opc" |
| 2247 |
| 2248 raddr = (aa << 9) | (addrlsbs << 1); |
| 2249 if (raddr & 0x400) |
| 2250 raddr = raddr - 0x800; |
| 2251 /* This is a pc-relative jump, but we don't use SM because that |
| 2252 would load the target address from the memory at X(PC), not u
se |
| 2253 PC+X *as* the address. So we use SC to use the address, not
the |
| 2254 data at that address. */ |
| 2255 ID (MSO_jmp); SC (pc + raddr + msp430->n_bytes); |
| 2256 msp430->cond = jmp; |
| 2257 |
| 2258 /* Extended instructions */ |
| 2259 |
| 2260 } |
| 2261 break; |
| 2262 } |
| 2263 break; |
| 2264 case 0x21: |
| 2265 GETBYTE (); |
| 2266 switch (op[1] & 0x00) |
| 2267 { |
| 2268 case 0x00: |
| 2269 goto op_semantics_23; |
| 2270 break; |
| 2271 } |
| 2272 break; |
| 2273 case 0x22: |
| 2274 GETBYTE (); |
| 2275 switch (op[1] & 0x00) |
| 2276 { |
| 2277 case 0x00: |
| 2278 goto op_semantics_23; |
| 2279 break; |
| 2280 } |
| 2281 break; |
| 2282 case 0x23: |
| 2283 GETBYTE (); |
| 2284 switch (op[1] & 0x00) |
| 2285 { |
| 2286 case 0x00: |
| 2287 goto op_semantics_23; |
| 2288 break; |
| 2289 } |
| 2290 break; |
| 2291 case 0x24: |
| 2292 GETBYTE (); |
| 2293 switch (op[1] & 0x00) |
| 2294 { |
| 2295 case 0x00: |
| 2296 goto op_semantics_23; |
| 2297 break; |
| 2298 } |
| 2299 break; |
| 2300 case 0x25: |
| 2301 GETBYTE (); |
| 2302 switch (op[1] & 0x00) |
| 2303 { |
| 2304 case 0x00: |
| 2305 goto op_semantics_23; |
| 2306 break; |
| 2307 } |
| 2308 break; |
| 2309 case 0x26: |
| 2310 GETBYTE (); |
| 2311 switch (op[1] & 0x00) |
| 2312 { |
| 2313 case 0x00: |
| 2314 goto op_semantics_23; |
| 2315 break; |
| 2316 } |
| 2317 break; |
| 2318 case 0x27: |
| 2319 GETBYTE (); |
| 2320 switch (op[1] & 0x00) |
| 2321 { |
| 2322 case 0x00: |
| 2323 goto op_semantics_23; |
| 2324 break; |
| 2325 } |
| 2326 break; |
| 2327 case 0x28: |
| 2328 GETBYTE (); |
| 2329 switch (op[1] & 0x00) |
| 2330 { |
| 2331 case 0x00: |
| 2332 goto op_semantics_23; |
| 2333 break; |
| 2334 } |
| 2335 break; |
| 2336 case 0x29: |
| 2337 GETBYTE (); |
| 2338 switch (op[1] & 0x00) |
| 2339 { |
| 2340 case 0x00: |
| 2341 goto op_semantics_23; |
| 2342 break; |
| 2343 } |
| 2344 break; |
| 2345 case 0x2a: |
| 2346 GETBYTE (); |
| 2347 switch (op[1] & 0x00) |
| 2348 { |
| 2349 case 0x00: |
| 2350 goto op_semantics_23; |
| 2351 break; |
| 2352 } |
| 2353 break; |
| 2354 case 0x2b: |
| 2355 GETBYTE (); |
| 2356 switch (op[1] & 0x00) |
| 2357 { |
| 2358 case 0x00: |
| 2359 goto op_semantics_23; |
| 2360 break; |
| 2361 } |
| 2362 break; |
| 2363 case 0x2c: |
| 2364 GETBYTE (); |
| 2365 switch (op[1] & 0x00) |
| 2366 { |
| 2367 case 0x00: |
| 2368 goto op_semantics_23; |
| 2369 break; |
| 2370 } |
| 2371 break; |
| 2372 case 0x2d: |
| 2373 GETBYTE (); |
| 2374 switch (op[1] & 0x00) |
| 2375 { |
| 2376 case 0x00: |
| 2377 goto op_semantics_23; |
| 2378 break; |
| 2379 } |
| 2380 break; |
| 2381 case 0x2e: |
| 2382 GETBYTE (); |
| 2383 switch (op[1] & 0x00) |
| 2384 { |
| 2385 case 0x00: |
| 2386 goto op_semantics_23; |
| 2387 break; |
| 2388 } |
| 2389 break; |
| 2390 case 0x2f: |
| 2391 GETBYTE (); |
| 2392 switch (op[1] & 0x00) |
| 2393 { |
| 2394 case 0x00: |
| 2395 goto op_semantics_23; |
| 2396 break; |
| 2397 } |
| 2398 break; |
| 2399 case 0x30: |
| 2400 GETBYTE (); |
| 2401 switch (op[1] & 0x00) |
| 2402 { |
| 2403 case 0x00: |
| 2404 goto op_semantics_23; |
| 2405 break; |
| 2406 } |
| 2407 break; |
| 2408 case 0x31: |
| 2409 GETBYTE (); |
| 2410 switch (op[1] & 0x00) |
| 2411 { |
| 2412 case 0x00: |
| 2413 goto op_semantics_23; |
| 2414 break; |
| 2415 } |
| 2416 break; |
| 2417 case 0x32: |
| 2418 GETBYTE (); |
| 2419 switch (op[1] & 0x00) |
| 2420 { |
| 2421 case 0x00: |
| 2422 goto op_semantics_23; |
| 2423 break; |
| 2424 } |
| 2425 break; |
| 2426 case 0x33: |
| 2427 GETBYTE (); |
| 2428 switch (op[1] & 0x00) |
| 2429 { |
| 2430 case 0x00: |
| 2431 goto op_semantics_23; |
| 2432 break; |
| 2433 } |
| 2434 break; |
| 2435 case 0x34: |
| 2436 GETBYTE (); |
| 2437 switch (op[1] & 0x00) |
| 2438 { |
| 2439 case 0x00: |
| 2440 goto op_semantics_23; |
| 2441 break; |
| 2442 } |
| 2443 break; |
| 2444 case 0x35: |
| 2445 GETBYTE (); |
| 2446 switch (op[1] & 0x00) |
| 2447 { |
| 2448 case 0x00: |
| 2449 goto op_semantics_23; |
| 2450 break; |
| 2451 } |
| 2452 break; |
| 2453 case 0x36: |
| 2454 GETBYTE (); |
| 2455 switch (op[1] & 0x00) |
| 2456 { |
| 2457 case 0x00: |
| 2458 goto op_semantics_23; |
| 2459 break; |
| 2460 } |
| 2461 break; |
| 2462 case 0x37: |
| 2463 GETBYTE (); |
| 2464 switch (op[1] & 0x00) |
| 2465 { |
| 2466 case 0x00: |
| 2467 goto op_semantics_23; |
| 2468 break; |
| 2469 } |
| 2470 break; |
| 2471 case 0x38: |
| 2472 GETBYTE (); |
| 2473 switch (op[1] & 0x00) |
| 2474 { |
| 2475 case 0x00: |
| 2476 goto op_semantics_23; |
| 2477 break; |
| 2478 } |
| 2479 break; |
| 2480 case 0x39: |
| 2481 GETBYTE (); |
| 2482 switch (op[1] & 0x00) |
| 2483 { |
| 2484 case 0x00: |
| 2485 goto op_semantics_23; |
| 2486 break; |
| 2487 } |
| 2488 break; |
| 2489 case 0x3a: |
| 2490 GETBYTE (); |
| 2491 switch (op[1] & 0x00) |
| 2492 { |
| 2493 case 0x00: |
| 2494 goto op_semantics_23; |
| 2495 break; |
| 2496 } |
| 2497 break; |
| 2498 case 0x3b: |
| 2499 GETBYTE (); |
| 2500 switch (op[1] & 0x00) |
| 2501 { |
| 2502 case 0x00: |
| 2503 goto op_semantics_23; |
| 2504 break; |
| 2505 } |
| 2506 break; |
| 2507 case 0x3c: |
| 2508 GETBYTE (); |
| 2509 switch (op[1] & 0x00) |
| 2510 { |
| 2511 case 0x00: |
| 2512 goto op_semantics_23; |
| 2513 break; |
| 2514 } |
| 2515 break; |
| 2516 case 0x3d: |
| 2517 GETBYTE (); |
| 2518 switch (op[1] & 0x00) |
| 2519 { |
| 2520 case 0x00: |
| 2521 goto op_semantics_23; |
| 2522 break; |
| 2523 } |
| 2524 break; |
| 2525 case 0x3e: |
| 2526 GETBYTE (); |
| 2527 switch (op[1] & 0x00) |
| 2528 { |
| 2529 case 0x00: |
| 2530 goto op_semantics_23; |
| 2531 break; |
| 2532 } |
| 2533 break; |
| 2534 case 0x3f: |
| 2535 GETBYTE (); |
| 2536 switch (op[1] & 0x00) |
| 2537 { |
| 2538 case 0x00: |
| 2539 goto op_semantics_23; |
| 2540 break; |
| 2541 } |
| 2542 break; |
| 2543 case 0x40: |
| 2544 GETBYTE (); |
| 2545 switch (op[1] & 0x00) |
| 2546 { |
| 2547 case 0x00: |
| 2548 op_semantics_24: |
| 2549 { |
| 2550 /** dopc sreg a b as dreg %D%b %1,%0
*/ |
| 2551 #line 352 "msp430-decode.opc" |
| 2552 int dopc AU = (op[0] >> 4) & 0x0f; |
| 2553 #line 352 "msp430-decode.opc" |
| 2554 int sreg AU = op[0] & 0x0f; |
| 2555 #line 352 "msp430-decode.opc" |
| 2556 int a AU = (op[1] >> 7) & 0x01; |
| 2557 #line 352 "msp430-decode.opc" |
| 2558 int b AU = (op[1] >> 6) & 0x01; |
| 2559 #line 352 "msp430-decode.opc" |
| 2560 int as AU = (op[1] >> 4) & 0x03; |
| 2561 #line 352 "msp430-decode.opc" |
| 2562 int dreg AU = op[1] & 0x0f; |
| 2563 if (trace) |
| 2564 { |
| 2565 printf ("\033[33m%s\033[0m %02x %02x\n", |
| 2566 "/** dopc sreg a b as dreg %D%b %1,%0
*/", |
| 2567 op[0], op[1]); |
| 2568 printf (" dopc = 0x%x,", dopc); |
| 2569 printf (" sreg = 0x%x,", sreg); |
| 2570 printf (" a = 0x%x,", a); |
| 2571 printf (" b = 0x%x,", b); |
| 2572 printf (" as = 0x%x,", as); |
| 2573 printf (" dreg = 0x%x\n", dreg); |
| 2574 } |
| 2575 SYNTAX("%D%b %1,%0"); |
| 2576 #line 352 "msp430-decode.opc" |
| 2577 |
| 2578 ID (dopc_to_id (dopc)); ASX (sreg, as, srxt_bits); ADX (dreg, a,
dsxt_bits); ABW (al_bit, b); |
| 2579 if (a == 0 && as == 0) |
| 2580 REPZC (srxt_bits, dsxt_bits); |
| 2581 |
| 2582 switch (msp430->id) |
| 2583 { |
| 2584 case MSO_mov: F_____; break; |
| 2585 case MSO_add: F_VNZC; break; |
| 2586 case MSO_addc: F_VNZC; break; |
| 2587 case MSO_subc: F_VNZC; break; |
| 2588 case MSO_sub: F_VNZC; break; |
| 2589 case MSO_cmp: F_VNZC; break; |
| 2590 case MSO_dadd: F_VNZC; break; |
| 2591 case MSO_bit: F_0NZC; break; |
| 2592 case MSO_bic: F_____; break; |
| 2593 case MSO_bis: F_____; break; |
| 2594 case MSO_xor: F_VNZC; break; |
| 2595 case MSO_and: F_0NZC; break; |
| 2596 default: break; |
| 2597 } |
| 2598 |
| 2599 } |
| 2600 break; |
| 2601 } |
| 2602 break; |
| 2603 case 0x41: |
| 2604 GETBYTE (); |
| 2605 switch (op[1] & 0x00) |
| 2606 { |
| 2607 case 0x00: |
| 2608 goto op_semantics_24; |
| 2609 break; |
| 2610 } |
| 2611 break; |
| 2612 case 0x42: |
| 2613 GETBYTE (); |
| 2614 switch (op[1] & 0x00) |
| 2615 { |
| 2616 case 0x00: |
| 2617 goto op_semantics_24; |
| 2618 break; |
| 2619 } |
| 2620 break; |
| 2621 case 0x43: |
| 2622 GETBYTE (); |
| 2623 switch (op[1] & 0x00) |
| 2624 { |
| 2625 case 0x00: |
| 2626 goto op_semantics_24; |
| 2627 break; |
| 2628 } |
| 2629 break; |
| 2630 case 0x44: |
| 2631 GETBYTE (); |
| 2632 switch (op[1] & 0x00) |
| 2633 { |
| 2634 case 0x00: |
| 2635 goto op_semantics_24; |
| 2636 break; |
| 2637 } |
| 2638 break; |
| 2639 case 0x45: |
| 2640 GETBYTE (); |
| 2641 switch (op[1] & 0x00) |
| 2642 { |
| 2643 case 0x00: |
| 2644 goto op_semantics_24; |
| 2645 break; |
| 2646 } |
| 2647 break; |
| 2648 case 0x46: |
| 2649 GETBYTE (); |
| 2650 switch (op[1] & 0x00) |
| 2651 { |
| 2652 case 0x00: |
| 2653 goto op_semantics_24; |
| 2654 break; |
| 2655 } |
| 2656 break; |
| 2657 case 0x47: |
| 2658 GETBYTE (); |
| 2659 switch (op[1] & 0x00) |
| 2660 { |
| 2661 case 0x00: |
| 2662 goto op_semantics_24; |
| 2663 break; |
| 2664 } |
| 2665 break; |
| 2666 case 0x48: |
| 2667 GETBYTE (); |
| 2668 switch (op[1] & 0x00) |
| 2669 { |
| 2670 case 0x00: |
| 2671 goto op_semantics_24; |
| 2672 break; |
| 2673 } |
| 2674 break; |
| 2675 case 0x49: |
| 2676 GETBYTE (); |
| 2677 switch (op[1] & 0x00) |
| 2678 { |
| 2679 case 0x00: |
| 2680 goto op_semantics_24; |
| 2681 break; |
| 2682 } |
| 2683 break; |
| 2684 case 0x4a: |
| 2685 GETBYTE (); |
| 2686 switch (op[1] & 0x00) |
| 2687 { |
| 2688 case 0x00: |
| 2689 goto op_semantics_24; |
| 2690 break; |
| 2691 } |
| 2692 break; |
| 2693 case 0x4b: |
| 2694 GETBYTE (); |
| 2695 switch (op[1] & 0x00) |
| 2696 { |
| 2697 case 0x00: |
| 2698 goto op_semantics_24; |
| 2699 break; |
| 2700 } |
| 2701 break; |
| 2702 case 0x4c: |
| 2703 GETBYTE (); |
| 2704 switch (op[1] & 0x00) |
| 2705 { |
| 2706 case 0x00: |
| 2707 goto op_semantics_24; |
| 2708 break; |
| 2709 } |
| 2710 break; |
| 2711 case 0x4d: |
| 2712 GETBYTE (); |
| 2713 switch (op[1] & 0x00) |
| 2714 { |
| 2715 case 0x00: |
| 2716 goto op_semantics_24; |
| 2717 break; |
| 2718 } |
| 2719 break; |
| 2720 case 0x4e: |
| 2721 GETBYTE (); |
| 2722 switch (op[1] & 0x00) |
| 2723 { |
| 2724 case 0x00: |
| 2725 goto op_semantics_24; |
| 2726 break; |
| 2727 } |
| 2728 break; |
| 2729 case 0x4f: |
| 2730 GETBYTE (); |
| 2731 switch (op[1] & 0x00) |
| 2732 { |
| 2733 case 0x00: |
| 2734 goto op_semantics_24; |
| 2735 break; |
| 2736 } |
| 2737 break; |
| 2738 case 0x50: |
| 2739 GETBYTE (); |
| 2740 switch (op[1] & 0x00) |
| 2741 { |
| 2742 case 0x00: |
| 2743 goto op_semantics_24; |
| 2744 break; |
| 2745 } |
| 2746 break; |
| 2747 case 0x51: |
| 2748 GETBYTE (); |
| 2749 switch (op[1] & 0x00) |
| 2750 { |
| 2751 case 0x00: |
| 2752 goto op_semantics_24; |
| 2753 break; |
| 2754 } |
| 2755 break; |
| 2756 case 0x52: |
| 2757 GETBYTE (); |
| 2758 switch (op[1] & 0x00) |
| 2759 { |
| 2760 case 0x00: |
| 2761 goto op_semantics_24; |
| 2762 break; |
| 2763 } |
| 2764 break; |
| 2765 case 0x53: |
| 2766 GETBYTE (); |
| 2767 switch (op[1] & 0x00) |
| 2768 { |
| 2769 case 0x00: |
| 2770 goto op_semantics_24; |
| 2771 break; |
| 2772 } |
| 2773 break; |
| 2774 case 0x54: |
| 2775 GETBYTE (); |
| 2776 switch (op[1] & 0x00) |
| 2777 { |
| 2778 case 0x00: |
| 2779 goto op_semantics_24; |
| 2780 break; |
| 2781 } |
| 2782 break; |
| 2783 case 0x55: |
| 2784 GETBYTE (); |
| 2785 switch (op[1] & 0x00) |
| 2786 { |
| 2787 case 0x00: |
| 2788 goto op_semantics_24; |
| 2789 break; |
| 2790 } |
| 2791 break; |
| 2792 case 0x56: |
| 2793 GETBYTE (); |
| 2794 switch (op[1] & 0x00) |
| 2795 { |
| 2796 case 0x00: |
| 2797 goto op_semantics_24; |
| 2798 break; |
| 2799 } |
| 2800 break; |
| 2801 case 0x57: |
| 2802 GETBYTE (); |
| 2803 switch (op[1] & 0x00) |
| 2804 { |
| 2805 case 0x00: |
| 2806 goto op_semantics_24; |
| 2807 break; |
| 2808 } |
| 2809 break; |
| 2810 case 0x58: |
| 2811 GETBYTE (); |
| 2812 switch (op[1] & 0x00) |
| 2813 { |
| 2814 case 0x00: |
| 2815 goto op_semantics_24; |
| 2816 break; |
| 2817 } |
| 2818 break; |
| 2819 case 0x59: |
| 2820 GETBYTE (); |
| 2821 switch (op[1] & 0x00) |
| 2822 { |
| 2823 case 0x00: |
| 2824 goto op_semantics_24; |
| 2825 break; |
| 2826 } |
| 2827 break; |
| 2828 case 0x5a: |
| 2829 GETBYTE (); |
| 2830 switch (op[1] & 0x00) |
| 2831 { |
| 2832 case 0x00: |
| 2833 goto op_semantics_24; |
| 2834 break; |
| 2835 } |
| 2836 break; |
| 2837 case 0x5b: |
| 2838 GETBYTE (); |
| 2839 switch (op[1] & 0x00) |
| 2840 { |
| 2841 case 0x00: |
| 2842 goto op_semantics_24; |
| 2843 break; |
| 2844 } |
| 2845 break; |
| 2846 case 0x5c: |
| 2847 GETBYTE (); |
| 2848 switch (op[1] & 0x00) |
| 2849 { |
| 2850 case 0x00: |
| 2851 goto op_semantics_24; |
| 2852 break; |
| 2853 } |
| 2854 break; |
| 2855 case 0x5d: |
| 2856 GETBYTE (); |
| 2857 switch (op[1] & 0x00) |
| 2858 { |
| 2859 case 0x00: |
| 2860 goto op_semantics_24; |
| 2861 break; |
| 2862 } |
| 2863 break; |
| 2864 case 0x5e: |
| 2865 GETBYTE (); |
| 2866 switch (op[1] & 0x00) |
| 2867 { |
| 2868 case 0x00: |
| 2869 goto op_semantics_24; |
| 2870 break; |
| 2871 } |
| 2872 break; |
| 2873 case 0x5f: |
| 2874 GETBYTE (); |
| 2875 switch (op[1] & 0x00) |
| 2876 { |
| 2877 case 0x00: |
| 2878 goto op_semantics_24; |
| 2879 break; |
| 2880 } |
| 2881 break; |
| 2882 case 0x60: |
| 2883 GETBYTE (); |
| 2884 switch (op[1] & 0x00) |
| 2885 { |
| 2886 case 0x00: |
| 2887 goto op_semantics_24; |
| 2888 break; |
| 2889 } |
| 2890 break; |
| 2891 case 0x61: |
| 2892 GETBYTE (); |
| 2893 switch (op[1] & 0x00) |
| 2894 { |
| 2895 case 0x00: |
| 2896 goto op_semantics_24; |
| 2897 break; |
| 2898 } |
| 2899 break; |
| 2900 case 0x62: |
| 2901 GETBYTE (); |
| 2902 switch (op[1] & 0x00) |
| 2903 { |
| 2904 case 0x00: |
| 2905 goto op_semantics_24; |
| 2906 break; |
| 2907 } |
| 2908 break; |
| 2909 case 0x63: |
| 2910 GETBYTE (); |
| 2911 switch (op[1] & 0x00) |
| 2912 { |
| 2913 case 0x00: |
| 2914 goto op_semantics_24; |
| 2915 break; |
| 2916 } |
| 2917 break; |
| 2918 case 0x64: |
| 2919 GETBYTE (); |
| 2920 switch (op[1] & 0x00) |
| 2921 { |
| 2922 case 0x00: |
| 2923 goto op_semantics_24; |
| 2924 break; |
| 2925 } |
| 2926 break; |
| 2927 case 0x65: |
| 2928 GETBYTE (); |
| 2929 switch (op[1] & 0x00) |
| 2930 { |
| 2931 case 0x00: |
| 2932 goto op_semantics_24; |
| 2933 break; |
| 2934 } |
| 2935 break; |
| 2936 case 0x66: |
| 2937 GETBYTE (); |
| 2938 switch (op[1] & 0x00) |
| 2939 { |
| 2940 case 0x00: |
| 2941 goto op_semantics_24; |
| 2942 break; |
| 2943 } |
| 2944 break; |
| 2945 case 0x67: |
| 2946 GETBYTE (); |
| 2947 switch (op[1] & 0x00) |
| 2948 { |
| 2949 case 0x00: |
| 2950 goto op_semantics_24; |
| 2951 break; |
| 2952 } |
| 2953 break; |
| 2954 case 0x68: |
| 2955 GETBYTE (); |
| 2956 switch (op[1] & 0x00) |
| 2957 { |
| 2958 case 0x00: |
| 2959 goto op_semantics_24; |
| 2960 break; |
| 2961 } |
| 2962 break; |
| 2963 case 0x69: |
| 2964 GETBYTE (); |
| 2965 switch (op[1] & 0x00) |
| 2966 { |
| 2967 case 0x00: |
| 2968 goto op_semantics_24; |
| 2969 break; |
| 2970 } |
| 2971 break; |
| 2972 case 0x6a: |
| 2973 GETBYTE (); |
| 2974 switch (op[1] & 0x00) |
| 2975 { |
| 2976 case 0x00: |
| 2977 goto op_semantics_24; |
| 2978 break; |
| 2979 } |
| 2980 break; |
| 2981 case 0x6b: |
| 2982 GETBYTE (); |
| 2983 switch (op[1] & 0x00) |
| 2984 { |
| 2985 case 0x00: |
| 2986 goto op_semantics_24; |
| 2987 break; |
| 2988 } |
| 2989 break; |
| 2990 case 0x6c: |
| 2991 GETBYTE (); |
| 2992 switch (op[1] & 0x00) |
| 2993 { |
| 2994 case 0x00: |
| 2995 goto op_semantics_24; |
| 2996 break; |
| 2997 } |
| 2998 break; |
| 2999 case 0x6d: |
| 3000 GETBYTE (); |
| 3001 switch (op[1] & 0x00) |
| 3002 { |
| 3003 case 0x00: |
| 3004 goto op_semantics_24; |
| 3005 break; |
| 3006 } |
| 3007 break; |
| 3008 case 0x6e: |
| 3009 GETBYTE (); |
| 3010 switch (op[1] & 0x00) |
| 3011 { |
| 3012 case 0x00: |
| 3013 goto op_semantics_24; |
| 3014 break; |
| 3015 } |
| 3016 break; |
| 3017 case 0x6f: |
| 3018 GETBYTE (); |
| 3019 switch (op[1] & 0x00) |
| 3020 { |
| 3021 case 0x00: |
| 3022 goto op_semantics_24; |
| 3023 break; |
| 3024 } |
| 3025 break; |
| 3026 case 0x70: |
| 3027 GETBYTE (); |
| 3028 switch (op[1] & 0x00) |
| 3029 { |
| 3030 case 0x00: |
| 3031 goto op_semantics_24; |
| 3032 break; |
| 3033 } |
| 3034 break; |
| 3035 case 0x71: |
| 3036 GETBYTE (); |
| 3037 switch (op[1] & 0x00) |
| 3038 { |
| 3039 case 0x00: |
| 3040 goto op_semantics_24; |
| 3041 break; |
| 3042 } |
| 3043 break; |
| 3044 case 0x72: |
| 3045 GETBYTE (); |
| 3046 switch (op[1] & 0x00) |
| 3047 { |
| 3048 case 0x00: |
| 3049 goto op_semantics_24; |
| 3050 break; |
| 3051 } |
| 3052 break; |
| 3053 case 0x73: |
| 3054 GETBYTE (); |
| 3055 switch (op[1] & 0x00) |
| 3056 { |
| 3057 case 0x00: |
| 3058 goto op_semantics_24; |
| 3059 break; |
| 3060 } |
| 3061 break; |
| 3062 case 0x74: |
| 3063 GETBYTE (); |
| 3064 switch (op[1] & 0x00) |
| 3065 { |
| 3066 case 0x00: |
| 3067 goto op_semantics_24; |
| 3068 break; |
| 3069 } |
| 3070 break; |
| 3071 case 0x75: |
| 3072 GETBYTE (); |
| 3073 switch (op[1] & 0x00) |
| 3074 { |
| 3075 case 0x00: |
| 3076 goto op_semantics_24; |
| 3077 break; |
| 3078 } |
| 3079 break; |
| 3080 case 0x76: |
| 3081 GETBYTE (); |
| 3082 switch (op[1] & 0x00) |
| 3083 { |
| 3084 case 0x00: |
| 3085 goto op_semantics_24; |
| 3086 break; |
| 3087 } |
| 3088 break; |
| 3089 case 0x77: |
| 3090 GETBYTE (); |
| 3091 switch (op[1] & 0x00) |
| 3092 { |
| 3093 case 0x00: |
| 3094 goto op_semantics_24; |
| 3095 break; |
| 3096 } |
| 3097 break; |
| 3098 case 0x78: |
| 3099 GETBYTE (); |
| 3100 switch (op[1] & 0x00) |
| 3101 { |
| 3102 case 0x00: |
| 3103 goto op_semantics_24; |
| 3104 break; |
| 3105 } |
| 3106 break; |
| 3107 case 0x79: |
| 3108 GETBYTE (); |
| 3109 switch (op[1] & 0x00) |
| 3110 { |
| 3111 case 0x00: |
| 3112 goto op_semantics_24; |
| 3113 break; |
| 3114 } |
| 3115 break; |
| 3116 case 0x7a: |
| 3117 GETBYTE (); |
| 3118 switch (op[1] & 0x00) |
| 3119 { |
| 3120 case 0x00: |
| 3121 goto op_semantics_24; |
| 3122 break; |
| 3123 } |
| 3124 break; |
| 3125 case 0x7b: |
| 3126 GETBYTE (); |
| 3127 switch (op[1] & 0x00) |
| 3128 { |
| 3129 case 0x00: |
| 3130 goto op_semantics_24; |
| 3131 break; |
| 3132 } |
| 3133 break; |
| 3134 case 0x7c: |
| 3135 GETBYTE (); |
| 3136 switch (op[1] & 0x00) |
| 3137 { |
| 3138 case 0x00: |
| 3139 goto op_semantics_24; |
| 3140 break; |
| 3141 } |
| 3142 break; |
| 3143 case 0x7d: |
| 3144 GETBYTE (); |
| 3145 switch (op[1] & 0x00) |
| 3146 { |
| 3147 case 0x00: |
| 3148 goto op_semantics_24; |
| 3149 break; |
| 3150 } |
| 3151 break; |
| 3152 case 0x7e: |
| 3153 GETBYTE (); |
| 3154 switch (op[1] & 0x00) |
| 3155 { |
| 3156 case 0x00: |
| 3157 goto op_semantics_24; |
| 3158 break; |
| 3159 } |
| 3160 break; |
| 3161 case 0x7f: |
| 3162 GETBYTE (); |
| 3163 switch (op[1] & 0x00) |
| 3164 { |
| 3165 case 0x00: |
| 3166 goto op_semantics_24; |
| 3167 break; |
| 3168 } |
| 3169 break; |
| 3170 case 0x80: |
| 3171 GETBYTE (); |
| 3172 switch (op[1] & 0x00) |
| 3173 { |
| 3174 case 0x00: |
| 3175 goto op_semantics_24; |
| 3176 break; |
| 3177 } |
| 3178 break; |
| 3179 case 0x81: |
| 3180 GETBYTE (); |
| 3181 switch (op[1] & 0x00) |
| 3182 { |
| 3183 case 0x00: |
| 3184 goto op_semantics_24; |
| 3185 break; |
| 3186 } |
| 3187 break; |
| 3188 case 0x82: |
| 3189 GETBYTE (); |
| 3190 switch (op[1] & 0x00) |
| 3191 { |
| 3192 case 0x00: |
| 3193 goto op_semantics_24; |
| 3194 break; |
| 3195 } |
| 3196 break; |
| 3197 case 0x83: |
| 3198 GETBYTE (); |
| 3199 switch (op[1] & 0x00) |
| 3200 { |
| 3201 case 0x00: |
| 3202 goto op_semantics_24; |
| 3203 break; |
| 3204 } |
| 3205 break; |
| 3206 case 0x84: |
| 3207 GETBYTE (); |
| 3208 switch (op[1] & 0x00) |
| 3209 { |
| 3210 case 0x00: |
| 3211 goto op_semantics_24; |
| 3212 break; |
| 3213 } |
| 3214 break; |
| 3215 case 0x85: |
| 3216 GETBYTE (); |
| 3217 switch (op[1] & 0x00) |
| 3218 { |
| 3219 case 0x00: |
| 3220 goto op_semantics_24; |
| 3221 break; |
| 3222 } |
| 3223 break; |
| 3224 case 0x86: |
| 3225 GETBYTE (); |
| 3226 switch (op[1] & 0x00) |
| 3227 { |
| 3228 case 0x00: |
| 3229 goto op_semantics_24; |
| 3230 break; |
| 3231 } |
| 3232 break; |
| 3233 case 0x87: |
| 3234 GETBYTE (); |
| 3235 switch (op[1] & 0x00) |
| 3236 { |
| 3237 case 0x00: |
| 3238 goto op_semantics_24; |
| 3239 break; |
| 3240 } |
| 3241 break; |
| 3242 case 0x88: |
| 3243 GETBYTE (); |
| 3244 switch (op[1] & 0x00) |
| 3245 { |
| 3246 case 0x00: |
| 3247 goto op_semantics_24; |
| 3248 break; |
| 3249 } |
| 3250 break; |
| 3251 case 0x89: |
| 3252 GETBYTE (); |
| 3253 switch (op[1] & 0x00) |
| 3254 { |
| 3255 case 0x00: |
| 3256 goto op_semantics_24; |
| 3257 break; |
| 3258 } |
| 3259 break; |
| 3260 case 0x8a: |
| 3261 GETBYTE (); |
| 3262 switch (op[1] & 0x00) |
| 3263 { |
| 3264 case 0x00: |
| 3265 goto op_semantics_24; |
| 3266 break; |
| 3267 } |
| 3268 break; |
| 3269 case 0x8b: |
| 3270 GETBYTE (); |
| 3271 switch (op[1] & 0x00) |
| 3272 { |
| 3273 case 0x00: |
| 3274 goto op_semantics_24; |
| 3275 break; |
| 3276 } |
| 3277 break; |
| 3278 case 0x8c: |
| 3279 GETBYTE (); |
| 3280 switch (op[1] & 0x00) |
| 3281 { |
| 3282 case 0x00: |
| 3283 goto op_semantics_24; |
| 3284 break; |
| 3285 } |
| 3286 break; |
| 3287 case 0x8d: |
| 3288 GETBYTE (); |
| 3289 switch (op[1] & 0x00) |
| 3290 { |
| 3291 case 0x00: |
| 3292 goto op_semantics_24; |
| 3293 break; |
| 3294 } |
| 3295 break; |
| 3296 case 0x8e: |
| 3297 GETBYTE (); |
| 3298 switch (op[1] & 0x00) |
| 3299 { |
| 3300 case 0x00: |
| 3301 goto op_semantics_24; |
| 3302 break; |
| 3303 } |
| 3304 break; |
| 3305 case 0x8f: |
| 3306 GETBYTE (); |
| 3307 switch (op[1] & 0x00) |
| 3308 { |
| 3309 case 0x00: |
| 3310 goto op_semantics_24; |
| 3311 break; |
| 3312 } |
| 3313 break; |
| 3314 case 0x90: |
| 3315 GETBYTE (); |
| 3316 switch (op[1] & 0x00) |
| 3317 { |
| 3318 case 0x00: |
| 3319 goto op_semantics_24; |
| 3320 break; |
| 3321 } |
| 3322 break; |
| 3323 case 0x91: |
| 3324 GETBYTE (); |
| 3325 switch (op[1] & 0x00) |
| 3326 { |
| 3327 case 0x00: |
| 3328 goto op_semantics_24; |
| 3329 break; |
| 3330 } |
| 3331 break; |
| 3332 case 0x92: |
| 3333 GETBYTE (); |
| 3334 switch (op[1] & 0x00) |
| 3335 { |
| 3336 case 0x00: |
| 3337 goto op_semantics_24; |
| 3338 break; |
| 3339 } |
| 3340 break; |
| 3341 case 0x93: |
| 3342 GETBYTE (); |
| 3343 switch (op[1] & 0x00) |
| 3344 { |
| 3345 case 0x00: |
| 3346 goto op_semantics_24; |
| 3347 break; |
| 3348 } |
| 3349 break; |
| 3350 case 0x94: |
| 3351 GETBYTE (); |
| 3352 switch (op[1] & 0x00) |
| 3353 { |
| 3354 case 0x00: |
| 3355 goto op_semantics_24; |
| 3356 break; |
| 3357 } |
| 3358 break; |
| 3359 case 0x95: |
| 3360 GETBYTE (); |
| 3361 switch (op[1] & 0x00) |
| 3362 { |
| 3363 case 0x00: |
| 3364 goto op_semantics_24; |
| 3365 break; |
| 3366 } |
| 3367 break; |
| 3368 case 0x96: |
| 3369 GETBYTE (); |
| 3370 switch (op[1] & 0x00) |
| 3371 { |
| 3372 case 0x00: |
| 3373 goto op_semantics_24; |
| 3374 break; |
| 3375 } |
| 3376 break; |
| 3377 case 0x97: |
| 3378 GETBYTE (); |
| 3379 switch (op[1] & 0x00) |
| 3380 { |
| 3381 case 0x00: |
| 3382 goto op_semantics_24; |
| 3383 break; |
| 3384 } |
| 3385 break; |
| 3386 case 0x98: |
| 3387 GETBYTE (); |
| 3388 switch (op[1] & 0x00) |
| 3389 { |
| 3390 case 0x00: |
| 3391 goto op_semantics_24; |
| 3392 break; |
| 3393 } |
| 3394 break; |
| 3395 case 0x99: |
| 3396 GETBYTE (); |
| 3397 switch (op[1] & 0x00) |
| 3398 { |
| 3399 case 0x00: |
| 3400 goto op_semantics_24; |
| 3401 break; |
| 3402 } |
| 3403 break; |
| 3404 case 0x9a: |
| 3405 GETBYTE (); |
| 3406 switch (op[1] & 0x00) |
| 3407 { |
| 3408 case 0x00: |
| 3409 goto op_semantics_24; |
| 3410 break; |
| 3411 } |
| 3412 break; |
| 3413 case 0x9b: |
| 3414 GETBYTE (); |
| 3415 switch (op[1] & 0x00) |
| 3416 { |
| 3417 case 0x00: |
| 3418 goto op_semantics_24; |
| 3419 break; |
| 3420 } |
| 3421 break; |
| 3422 case 0x9c: |
| 3423 GETBYTE (); |
| 3424 switch (op[1] & 0x00) |
| 3425 { |
| 3426 case 0x00: |
| 3427 goto op_semantics_24; |
| 3428 break; |
| 3429 } |
| 3430 break; |
| 3431 case 0x9d: |
| 3432 GETBYTE (); |
| 3433 switch (op[1] & 0x00) |
| 3434 { |
| 3435 case 0x00: |
| 3436 goto op_semantics_24; |
| 3437 break; |
| 3438 } |
| 3439 break; |
| 3440 case 0x9e: |
| 3441 GETBYTE (); |
| 3442 switch (op[1] & 0x00) |
| 3443 { |
| 3444 case 0x00: |
| 3445 goto op_semantics_24; |
| 3446 break; |
| 3447 } |
| 3448 break; |
| 3449 case 0x9f: |
| 3450 GETBYTE (); |
| 3451 switch (op[1] & 0x00) |
| 3452 { |
| 3453 case 0x00: |
| 3454 goto op_semantics_24; |
| 3455 break; |
| 3456 } |
| 3457 break; |
| 3458 case 0xa0: |
| 3459 GETBYTE (); |
| 3460 switch (op[1] & 0x00) |
| 3461 { |
| 3462 case 0x00: |
| 3463 goto op_semantics_24; |
| 3464 break; |
| 3465 } |
| 3466 break; |
| 3467 case 0xa1: |
| 3468 GETBYTE (); |
| 3469 switch (op[1] & 0x00) |
| 3470 { |
| 3471 case 0x00: |
| 3472 goto op_semantics_24; |
| 3473 break; |
| 3474 } |
| 3475 break; |
| 3476 case 0xa2: |
| 3477 GETBYTE (); |
| 3478 switch (op[1] & 0x00) |
| 3479 { |
| 3480 case 0x00: |
| 3481 goto op_semantics_24; |
| 3482 break; |
| 3483 } |
| 3484 break; |
| 3485 case 0xa3: |
| 3486 GETBYTE (); |
| 3487 switch (op[1] & 0x00) |
| 3488 { |
| 3489 case 0x00: |
| 3490 goto op_semantics_24; |
| 3491 break; |
| 3492 } |
| 3493 break; |
| 3494 case 0xa4: |
| 3495 GETBYTE (); |
| 3496 switch (op[1] & 0x00) |
| 3497 { |
| 3498 case 0x00: |
| 3499 goto op_semantics_24; |
| 3500 break; |
| 3501 } |
| 3502 break; |
| 3503 case 0xa5: |
| 3504 GETBYTE (); |
| 3505 switch (op[1] & 0x00) |
| 3506 { |
| 3507 case 0x00: |
| 3508 goto op_semantics_24; |
| 3509 break; |
| 3510 } |
| 3511 break; |
| 3512 case 0xa6: |
| 3513 GETBYTE (); |
| 3514 switch (op[1] & 0x00) |
| 3515 { |
| 3516 case 0x00: |
| 3517 goto op_semantics_24; |
| 3518 break; |
| 3519 } |
| 3520 break; |
| 3521 case 0xa7: |
| 3522 GETBYTE (); |
| 3523 switch (op[1] & 0x00) |
| 3524 { |
| 3525 case 0x00: |
| 3526 goto op_semantics_24; |
| 3527 break; |
| 3528 } |
| 3529 break; |
| 3530 case 0xa8: |
| 3531 GETBYTE (); |
| 3532 switch (op[1] & 0x00) |
| 3533 { |
| 3534 case 0x00: |
| 3535 goto op_semantics_24; |
| 3536 break; |
| 3537 } |
| 3538 break; |
| 3539 case 0xa9: |
| 3540 GETBYTE (); |
| 3541 switch (op[1] & 0x00) |
| 3542 { |
| 3543 case 0x00: |
| 3544 goto op_semantics_24; |
| 3545 break; |
| 3546 } |
| 3547 break; |
| 3548 case 0xaa: |
| 3549 GETBYTE (); |
| 3550 switch (op[1] & 0x00) |
| 3551 { |
| 3552 case 0x00: |
| 3553 goto op_semantics_24; |
| 3554 break; |
| 3555 } |
| 3556 break; |
| 3557 case 0xab: |
| 3558 GETBYTE (); |
| 3559 switch (op[1] & 0x00) |
| 3560 { |
| 3561 case 0x00: |
| 3562 goto op_semantics_24; |
| 3563 break; |
| 3564 } |
| 3565 break; |
| 3566 case 0xac: |
| 3567 GETBYTE (); |
| 3568 switch (op[1] & 0x00) |
| 3569 { |
| 3570 case 0x00: |
| 3571 goto op_semantics_24; |
| 3572 break; |
| 3573 } |
| 3574 break; |
| 3575 case 0xad: |
| 3576 GETBYTE (); |
| 3577 switch (op[1] & 0x00) |
| 3578 { |
| 3579 case 0x00: |
| 3580 goto op_semantics_24; |
| 3581 break; |
| 3582 } |
| 3583 break; |
| 3584 case 0xae: |
| 3585 GETBYTE (); |
| 3586 switch (op[1] & 0x00) |
| 3587 { |
| 3588 case 0x00: |
| 3589 goto op_semantics_24; |
| 3590 break; |
| 3591 } |
| 3592 break; |
| 3593 case 0xaf: |
| 3594 GETBYTE (); |
| 3595 switch (op[1] & 0x00) |
| 3596 { |
| 3597 case 0x00: |
| 3598 goto op_semantics_24; |
| 3599 break; |
| 3600 } |
| 3601 break; |
| 3602 case 0xb0: |
| 3603 GETBYTE (); |
| 3604 switch (op[1] & 0x00) |
| 3605 { |
| 3606 case 0x00: |
| 3607 goto op_semantics_24; |
| 3608 break; |
| 3609 } |
| 3610 break; |
| 3611 case 0xb1: |
| 3612 GETBYTE (); |
| 3613 switch (op[1] & 0x00) |
| 3614 { |
| 3615 case 0x00: |
| 3616 goto op_semantics_24; |
| 3617 break; |
| 3618 } |
| 3619 break; |
| 3620 case 0xb2: |
| 3621 GETBYTE (); |
| 3622 switch (op[1] & 0x00) |
| 3623 { |
| 3624 case 0x00: |
| 3625 goto op_semantics_24; |
| 3626 break; |
| 3627 } |
| 3628 break; |
| 3629 case 0xb3: |
| 3630 GETBYTE (); |
| 3631 switch (op[1] & 0x00) |
| 3632 { |
| 3633 case 0x00: |
| 3634 goto op_semantics_24; |
| 3635 break; |
| 3636 } |
| 3637 break; |
| 3638 case 0xb4: |
| 3639 GETBYTE (); |
| 3640 switch (op[1] & 0x00) |
| 3641 { |
| 3642 case 0x00: |
| 3643 goto op_semantics_24; |
| 3644 break; |
| 3645 } |
| 3646 break; |
| 3647 case 0xb5: |
| 3648 GETBYTE (); |
| 3649 switch (op[1] & 0x00) |
| 3650 { |
| 3651 case 0x00: |
| 3652 goto op_semantics_24; |
| 3653 break; |
| 3654 } |
| 3655 break; |
| 3656 case 0xb6: |
| 3657 GETBYTE (); |
| 3658 switch (op[1] & 0x00) |
| 3659 { |
| 3660 case 0x00: |
| 3661 goto op_semantics_24; |
| 3662 break; |
| 3663 } |
| 3664 break; |
| 3665 case 0xb7: |
| 3666 GETBYTE (); |
| 3667 switch (op[1] & 0x00) |
| 3668 { |
| 3669 case 0x00: |
| 3670 goto op_semantics_24; |
| 3671 break; |
| 3672 } |
| 3673 break; |
| 3674 case 0xb8: |
| 3675 GETBYTE (); |
| 3676 switch (op[1] & 0x00) |
| 3677 { |
| 3678 case 0x00: |
| 3679 goto op_semantics_24; |
| 3680 break; |
| 3681 } |
| 3682 break; |
| 3683 case 0xb9: |
| 3684 GETBYTE (); |
| 3685 switch (op[1] & 0x00) |
| 3686 { |
| 3687 case 0x00: |
| 3688 goto op_semantics_24; |
| 3689 break; |
| 3690 } |
| 3691 break; |
| 3692 case 0xba: |
| 3693 GETBYTE (); |
| 3694 switch (op[1] & 0x00) |
| 3695 { |
| 3696 case 0x00: |
| 3697 goto op_semantics_24; |
| 3698 break; |
| 3699 } |
| 3700 break; |
| 3701 case 0xbb: |
| 3702 GETBYTE (); |
| 3703 switch (op[1] & 0x00) |
| 3704 { |
| 3705 case 0x00: |
| 3706 goto op_semantics_24; |
| 3707 break; |
| 3708 } |
| 3709 break; |
| 3710 case 0xbc: |
| 3711 GETBYTE (); |
| 3712 switch (op[1] & 0x00) |
| 3713 { |
| 3714 case 0x00: |
| 3715 goto op_semantics_24; |
| 3716 break; |
| 3717 } |
| 3718 break; |
| 3719 case 0xbd: |
| 3720 GETBYTE (); |
| 3721 switch (op[1] & 0x00) |
| 3722 { |
| 3723 case 0x00: |
| 3724 goto op_semantics_24; |
| 3725 break; |
| 3726 } |
| 3727 break; |
| 3728 case 0xbe: |
| 3729 GETBYTE (); |
| 3730 switch (op[1] & 0x00) |
| 3731 { |
| 3732 case 0x00: |
| 3733 goto op_semantics_24; |
| 3734 break; |
| 3735 } |
| 3736 break; |
| 3737 case 0xbf: |
| 3738 GETBYTE (); |
| 3739 switch (op[1] & 0x00) |
| 3740 { |
| 3741 case 0x00: |
| 3742 goto op_semantics_24; |
| 3743 break; |
| 3744 } |
| 3745 break; |
| 3746 case 0xc0: |
| 3747 GETBYTE (); |
| 3748 switch (op[1] & 0x00) |
| 3749 { |
| 3750 case 0x00: |
| 3751 goto op_semantics_24; |
| 3752 break; |
| 3753 } |
| 3754 break; |
| 3755 case 0xc1: |
| 3756 GETBYTE (); |
| 3757 switch (op[1] & 0x00) |
| 3758 { |
| 3759 case 0x00: |
| 3760 goto op_semantics_24; |
| 3761 break; |
| 3762 } |
| 3763 break; |
| 3764 case 0xc2: |
| 3765 GETBYTE (); |
| 3766 switch (op[1] & 0x00) |
| 3767 { |
| 3768 case 0x00: |
| 3769 goto op_semantics_24; |
| 3770 break; |
| 3771 } |
| 3772 break; |
| 3773 case 0xc3: |
| 3774 GETBYTE (); |
| 3775 switch (op[1] & 0x00) |
| 3776 { |
| 3777 case 0x00: |
| 3778 goto op_semantics_24; |
| 3779 break; |
| 3780 } |
| 3781 break; |
| 3782 case 0xc4: |
| 3783 GETBYTE (); |
| 3784 switch (op[1] & 0x00) |
| 3785 { |
| 3786 case 0x00: |
| 3787 goto op_semantics_24; |
| 3788 break; |
| 3789 } |
| 3790 break; |
| 3791 case 0xc5: |
| 3792 GETBYTE (); |
| 3793 switch (op[1] & 0x00) |
| 3794 { |
| 3795 case 0x00: |
| 3796 goto op_semantics_24; |
| 3797 break; |
| 3798 } |
| 3799 break; |
| 3800 case 0xc6: |
| 3801 GETBYTE (); |
| 3802 switch (op[1] & 0x00) |
| 3803 { |
| 3804 case 0x00: |
| 3805 goto op_semantics_24; |
| 3806 break; |
| 3807 } |
| 3808 break; |
| 3809 case 0xc7: |
| 3810 GETBYTE (); |
| 3811 switch (op[1] & 0x00) |
| 3812 { |
| 3813 case 0x00: |
| 3814 goto op_semantics_24; |
| 3815 break; |
| 3816 } |
| 3817 break; |
| 3818 case 0xc8: |
| 3819 GETBYTE (); |
| 3820 switch (op[1] & 0x00) |
| 3821 { |
| 3822 case 0x00: |
| 3823 goto op_semantics_24; |
| 3824 break; |
| 3825 } |
| 3826 break; |
| 3827 case 0xc9: |
| 3828 GETBYTE (); |
| 3829 switch (op[1] & 0x00) |
| 3830 { |
| 3831 case 0x00: |
| 3832 goto op_semantics_24; |
| 3833 break; |
| 3834 } |
| 3835 break; |
| 3836 case 0xca: |
| 3837 GETBYTE (); |
| 3838 switch (op[1] & 0x00) |
| 3839 { |
| 3840 case 0x00: |
| 3841 goto op_semantics_24; |
| 3842 break; |
| 3843 } |
| 3844 break; |
| 3845 case 0xcb: |
| 3846 GETBYTE (); |
| 3847 switch (op[1] & 0x00) |
| 3848 { |
| 3849 case 0x00: |
| 3850 goto op_semantics_24; |
| 3851 break; |
| 3852 } |
| 3853 break; |
| 3854 case 0xcc: |
| 3855 GETBYTE (); |
| 3856 switch (op[1] & 0x00) |
| 3857 { |
| 3858 case 0x00: |
| 3859 goto op_semantics_24; |
| 3860 break; |
| 3861 } |
| 3862 break; |
| 3863 case 0xcd: |
| 3864 GETBYTE (); |
| 3865 switch (op[1] & 0x00) |
| 3866 { |
| 3867 case 0x00: |
| 3868 goto op_semantics_24; |
| 3869 break; |
| 3870 } |
| 3871 break; |
| 3872 case 0xce: |
| 3873 GETBYTE (); |
| 3874 switch (op[1] & 0x00) |
| 3875 { |
| 3876 case 0x00: |
| 3877 goto op_semantics_24; |
| 3878 break; |
| 3879 } |
| 3880 break; |
| 3881 case 0xcf: |
| 3882 GETBYTE (); |
| 3883 switch (op[1] & 0x00) |
| 3884 { |
| 3885 case 0x00: |
| 3886 goto op_semantics_24; |
| 3887 break; |
| 3888 } |
| 3889 break; |
| 3890 case 0xd0: |
| 3891 GETBYTE (); |
| 3892 switch (op[1] & 0x00) |
| 3893 { |
| 3894 case 0x00: |
| 3895 goto op_semantics_24; |
| 3896 break; |
| 3897 } |
| 3898 break; |
| 3899 case 0xd1: |
| 3900 GETBYTE (); |
| 3901 switch (op[1] & 0x00) |
| 3902 { |
| 3903 case 0x00: |
| 3904 goto op_semantics_24; |
| 3905 break; |
| 3906 } |
| 3907 break; |
| 3908 case 0xd2: |
| 3909 GETBYTE (); |
| 3910 switch (op[1] & 0x00) |
| 3911 { |
| 3912 case 0x00: |
| 3913 goto op_semantics_24; |
| 3914 break; |
| 3915 } |
| 3916 break; |
| 3917 case 0xd3: |
| 3918 GETBYTE (); |
| 3919 switch (op[1] & 0x00) |
| 3920 { |
| 3921 case 0x00: |
| 3922 goto op_semantics_24; |
| 3923 break; |
| 3924 } |
| 3925 break; |
| 3926 case 0xd4: |
| 3927 GETBYTE (); |
| 3928 switch (op[1] & 0x00) |
| 3929 { |
| 3930 case 0x00: |
| 3931 goto op_semantics_24; |
| 3932 break; |
| 3933 } |
| 3934 break; |
| 3935 case 0xd5: |
| 3936 GETBYTE (); |
| 3937 switch (op[1] & 0x00) |
| 3938 { |
| 3939 case 0x00: |
| 3940 goto op_semantics_24; |
| 3941 break; |
| 3942 } |
| 3943 break; |
| 3944 case 0xd6: |
| 3945 GETBYTE (); |
| 3946 switch (op[1] & 0x00) |
| 3947 { |
| 3948 case 0x00: |
| 3949 goto op_semantics_24; |
| 3950 break; |
| 3951 } |
| 3952 break; |
| 3953 case 0xd7: |
| 3954 GETBYTE (); |
| 3955 switch (op[1] & 0x00) |
| 3956 { |
| 3957 case 0x00: |
| 3958 goto op_semantics_24; |
| 3959 break; |
| 3960 } |
| 3961 break; |
| 3962 case 0xd8: |
| 3963 GETBYTE (); |
| 3964 switch (op[1] & 0x00) |
| 3965 { |
| 3966 case 0x00: |
| 3967 goto op_semantics_24; |
| 3968 break; |
| 3969 } |
| 3970 break; |
| 3971 case 0xd9: |
| 3972 GETBYTE (); |
| 3973 switch (op[1] & 0x00) |
| 3974 { |
| 3975 case 0x00: |
| 3976 goto op_semantics_24; |
| 3977 break; |
| 3978 } |
| 3979 break; |
| 3980 case 0xda: |
| 3981 GETBYTE (); |
| 3982 switch (op[1] & 0x00) |
| 3983 { |
| 3984 case 0x00: |
| 3985 goto op_semantics_24; |
| 3986 break; |
| 3987 } |
| 3988 break; |
| 3989 case 0xdb: |
| 3990 GETBYTE (); |
| 3991 switch (op[1] & 0x00) |
| 3992 { |
| 3993 case 0x00: |
| 3994 goto op_semantics_24; |
| 3995 break; |
| 3996 } |
| 3997 break; |
| 3998 case 0xdc: |
| 3999 GETBYTE (); |
| 4000 switch (op[1] & 0x00) |
| 4001 { |
| 4002 case 0x00: |
| 4003 goto op_semantics_24; |
| 4004 break; |
| 4005 } |
| 4006 break; |
| 4007 case 0xdd: |
| 4008 GETBYTE (); |
| 4009 switch (op[1] & 0x00) |
| 4010 { |
| 4011 case 0x00: |
| 4012 goto op_semantics_24; |
| 4013 break; |
| 4014 } |
| 4015 break; |
| 4016 case 0xde: |
| 4017 GETBYTE (); |
| 4018 switch (op[1] & 0x00) |
| 4019 { |
| 4020 case 0x00: |
| 4021 goto op_semantics_24; |
| 4022 break; |
| 4023 } |
| 4024 break; |
| 4025 case 0xdf: |
| 4026 GETBYTE (); |
| 4027 switch (op[1] & 0x00) |
| 4028 { |
| 4029 case 0x00: |
| 4030 goto op_semantics_24; |
| 4031 break; |
| 4032 } |
| 4033 break; |
| 4034 case 0xe0: |
| 4035 GETBYTE (); |
| 4036 switch (op[1] & 0x00) |
| 4037 { |
| 4038 case 0x00: |
| 4039 goto op_semantics_24; |
| 4040 break; |
| 4041 } |
| 4042 break; |
| 4043 case 0xe1: |
| 4044 GETBYTE (); |
| 4045 switch (op[1] & 0x00) |
| 4046 { |
| 4047 case 0x00: |
| 4048 goto op_semantics_24; |
| 4049 break; |
| 4050 } |
| 4051 break; |
| 4052 case 0xe2: |
| 4053 GETBYTE (); |
| 4054 switch (op[1] & 0x00) |
| 4055 { |
| 4056 case 0x00: |
| 4057 goto op_semantics_24; |
| 4058 break; |
| 4059 } |
| 4060 break; |
| 4061 case 0xe3: |
| 4062 GETBYTE (); |
| 4063 switch (op[1] & 0x00) |
| 4064 { |
| 4065 case 0x00: |
| 4066 goto op_semantics_24; |
| 4067 break; |
| 4068 } |
| 4069 break; |
| 4070 case 0xe4: |
| 4071 GETBYTE (); |
| 4072 switch (op[1] & 0x00) |
| 4073 { |
| 4074 case 0x00: |
| 4075 goto op_semantics_24; |
| 4076 break; |
| 4077 } |
| 4078 break; |
| 4079 case 0xe5: |
| 4080 GETBYTE (); |
| 4081 switch (op[1] & 0x00) |
| 4082 { |
| 4083 case 0x00: |
| 4084 goto op_semantics_24; |
| 4085 break; |
| 4086 } |
| 4087 break; |
| 4088 case 0xe6: |
| 4089 GETBYTE (); |
| 4090 switch (op[1] & 0x00) |
| 4091 { |
| 4092 case 0x00: |
| 4093 goto op_semantics_24; |
| 4094 break; |
| 4095 } |
| 4096 break; |
| 4097 case 0xe7: |
| 4098 GETBYTE (); |
| 4099 switch (op[1] & 0x00) |
| 4100 { |
| 4101 case 0x00: |
| 4102 goto op_semantics_24; |
| 4103 break; |
| 4104 } |
| 4105 break; |
| 4106 case 0xe8: |
| 4107 GETBYTE (); |
| 4108 switch (op[1] & 0x00) |
| 4109 { |
| 4110 case 0x00: |
| 4111 goto op_semantics_24; |
| 4112 break; |
| 4113 } |
| 4114 break; |
| 4115 case 0xe9: |
| 4116 GETBYTE (); |
| 4117 switch (op[1] & 0x00) |
| 4118 { |
| 4119 case 0x00: |
| 4120 goto op_semantics_24; |
| 4121 break; |
| 4122 } |
| 4123 break; |
| 4124 case 0xea: |
| 4125 GETBYTE (); |
| 4126 switch (op[1] & 0x00) |
| 4127 { |
| 4128 case 0x00: |
| 4129 goto op_semantics_24; |
| 4130 break; |
| 4131 } |
| 4132 break; |
| 4133 case 0xeb: |
| 4134 GETBYTE (); |
| 4135 switch (op[1] & 0x00) |
| 4136 { |
| 4137 case 0x00: |
| 4138 goto op_semantics_24; |
| 4139 break; |
| 4140 } |
| 4141 break; |
| 4142 case 0xec: |
| 4143 GETBYTE (); |
| 4144 switch (op[1] & 0x00) |
| 4145 { |
| 4146 case 0x00: |
| 4147 goto op_semantics_24; |
| 4148 break; |
| 4149 } |
| 4150 break; |
| 4151 case 0xed: |
| 4152 GETBYTE (); |
| 4153 switch (op[1] & 0x00) |
| 4154 { |
| 4155 case 0x00: |
| 4156 goto op_semantics_24; |
| 4157 break; |
| 4158 } |
| 4159 break; |
| 4160 case 0xee: |
| 4161 GETBYTE (); |
| 4162 switch (op[1] & 0x00) |
| 4163 { |
| 4164 case 0x00: |
| 4165 goto op_semantics_24; |
| 4166 break; |
| 4167 } |
| 4168 break; |
| 4169 case 0xef: |
| 4170 GETBYTE (); |
| 4171 switch (op[1] & 0x00) |
| 4172 { |
| 4173 case 0x00: |
| 4174 goto op_semantics_24; |
| 4175 break; |
| 4176 } |
| 4177 break; |
| 4178 case 0xf0: |
| 4179 GETBYTE (); |
| 4180 switch (op[1] & 0x00) |
| 4181 { |
| 4182 case 0x00: |
| 4183 goto op_semantics_24; |
| 4184 break; |
| 4185 } |
| 4186 break; |
| 4187 case 0xf1: |
| 4188 GETBYTE (); |
| 4189 switch (op[1] & 0x00) |
| 4190 { |
| 4191 case 0x00: |
| 4192 goto op_semantics_24; |
| 4193 break; |
| 4194 } |
| 4195 break; |
| 4196 case 0xf2: |
| 4197 GETBYTE (); |
| 4198 switch (op[1] & 0x00) |
| 4199 { |
| 4200 case 0x00: |
| 4201 goto op_semantics_24; |
| 4202 break; |
| 4203 } |
| 4204 break; |
| 4205 case 0xf3: |
| 4206 GETBYTE (); |
| 4207 switch (op[1] & 0x00) |
| 4208 { |
| 4209 case 0x00: |
| 4210 goto op_semantics_24; |
| 4211 break; |
| 4212 } |
| 4213 break; |
| 4214 case 0xf4: |
| 4215 GETBYTE (); |
| 4216 switch (op[1] & 0x00) |
| 4217 { |
| 4218 case 0x00: |
| 4219 goto op_semantics_24; |
| 4220 break; |
| 4221 } |
| 4222 break; |
| 4223 case 0xf5: |
| 4224 GETBYTE (); |
| 4225 switch (op[1] & 0x00) |
| 4226 { |
| 4227 case 0x00: |
| 4228 goto op_semantics_24; |
| 4229 break; |
| 4230 } |
| 4231 break; |
| 4232 case 0xf6: |
| 4233 GETBYTE (); |
| 4234 switch (op[1] & 0x00) |
| 4235 { |
| 4236 case 0x00: |
| 4237 goto op_semantics_24; |
| 4238 break; |
| 4239 } |
| 4240 break; |
| 4241 case 0xf7: |
| 4242 GETBYTE (); |
| 4243 switch (op[1] & 0x00) |
| 4244 { |
| 4245 case 0x00: |
| 4246 goto op_semantics_24; |
| 4247 break; |
| 4248 } |
| 4249 break; |
| 4250 case 0xf8: |
| 4251 GETBYTE (); |
| 4252 switch (op[1] & 0x00) |
| 4253 { |
| 4254 case 0x00: |
| 4255 goto op_semantics_24; |
| 4256 break; |
| 4257 } |
| 4258 break; |
| 4259 case 0xf9: |
| 4260 GETBYTE (); |
| 4261 switch (op[1] & 0x00) |
| 4262 { |
| 4263 case 0x00: |
| 4264 goto op_semantics_24; |
| 4265 break; |
| 4266 } |
| 4267 break; |
| 4268 case 0xfa: |
| 4269 GETBYTE (); |
| 4270 switch (op[1] & 0x00) |
| 4271 { |
| 4272 case 0x00: |
| 4273 goto op_semantics_24; |
| 4274 break; |
| 4275 } |
| 4276 break; |
| 4277 case 0xfb: |
| 4278 GETBYTE (); |
| 4279 switch (op[1] & 0x00) |
| 4280 { |
| 4281 case 0x00: |
| 4282 goto op_semantics_24; |
| 4283 break; |
| 4284 } |
| 4285 break; |
| 4286 case 0xfc: |
| 4287 GETBYTE (); |
| 4288 switch (op[1] & 0x00) |
| 4289 { |
| 4290 case 0x00: |
| 4291 goto op_semantics_24; |
| 4292 break; |
| 4293 } |
| 4294 break; |
| 4295 case 0xfd: |
| 4296 GETBYTE (); |
| 4297 switch (op[1] & 0x00) |
| 4298 { |
| 4299 case 0x00: |
| 4300 goto op_semantics_24; |
| 4301 break; |
| 4302 } |
| 4303 break; |
| 4304 case 0xfe: |
| 4305 GETBYTE (); |
| 4306 switch (op[1] & 0x00) |
| 4307 { |
| 4308 case 0x00: |
| 4309 goto op_semantics_24; |
| 4310 break; |
| 4311 } |
| 4312 break; |
| 4313 case 0xff: |
| 4314 GETBYTE (); |
| 4315 switch (op[1] & 0x00) |
| 4316 { |
| 4317 case 0x00: |
| 4318 goto op_semantics_24; |
| 4319 break; |
| 4320 } |
| 4321 break; |
| 4322 } |
| 4323 #line 569 "msp430-decode.opc" |
| 4324 |
| 4325 /*printf("<\033[34m%d\033[0m>", msp430->n_bytes);*/ |
| 4326 return msp430->n_bytes; |
| 4327 } |
OLD | NEW |