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