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