1 #line 1 "msp430-decode.opc"
3 /* Copyright (C) 2013-2017 Free Software Foundation, Inc.
4 Contributed by Red Hat.
7 This file is part of the GNU opcodes library.
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)
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.
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. */
29 #include "opcode/msp430-decode.h"
35 MSP430_Opcode_Decoded *msp430;
36 int (*getbyte)(void *);
43 #define AU ATTRIBUTE_UNUSED
44 #define GETBYTE() getbyte_swapped (ld)
45 #define B ((unsigned long) GETBYTE ())
48 getbyte_swapped (LocalData *ld)
52 if (ld->op_ptr == ld->msp430->n_bytes)
56 b = ld->getbyte (ld->ptr);
57 ld->op [(ld->msp430->n_bytes++)^1] = b;
59 while (ld->msp430->n_bytes & 1);
61 return ld->op[ld->op_ptr++];
64 #define ID(x) msp430->id = x
66 #define OP(n, t, r, a) (msp430->op[n].type = t, \
67 msp430->op[n].reg = r, \
68 msp430->op[n].addend = a)
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)
76 #define SYNTAX(x) msp430->syntax = x
77 #define UNSUPPORTED() msp430->syntax = "*unknown*"
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)
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)
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))
98 #define IMMU(bytes) immediate (bytes, 0, ld)
99 #define IMMS(bytes) immediate (bytes, 1, ld)
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
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. */
111 immediate (int bytes, int sign_extend, LocalData *ld)
119 if (sign_extend && (i & 0x80))
125 if (sign_extend && (i & 0x8000))
132 if (sign_extend && (i & 0x800000))
140 if (sign_extend && (i & 0x80000000ULL))
145 "Programmer error: immediate() called with invalid byte count %d\n",
156 01 X(Rn) Sym - X(abs) #1
158 11 (Rn++) #imm - #8 #-1
162 1 X(Rn) Sym - X(abs) - */
165 encode_ad (int reg, int ad, LocalData *ld, int ext)
167 MSP430_Opcode_Decoded *msp430 = ld->msp430;
171 int x = IMMU(2) | (ext << 16);
174 case 0: /* (PC) -> Symbolic. */
175 DA (x + ld->pc + ld->op_ptr - 2);
177 case 2: /* (SR) -> Absolute. */
192 encode_as (int reg, int as, LocalData *ld, int ext)
194 MSP430_Opcode_Decoded *msp430 = ld->msp430;
213 case 0: /* PC -> Symbolic. */
214 x = IMMU(2) | (ext << 16);
215 SA (x + ld->pc + ld->op_ptr - 2);
217 case 2: /* SR -> Absolute. */
218 x = IMMU(2) | (ext << 16);
225 x = IMMU(2) | (ext << 16);
252 /* This fetch *is* the *PC++ that the opcode encodes :-) */
253 x = IMMU(2) | (ext << 16);
272 encode_rep_zc (int srxt, int dsxt, LocalData *ld)
274 MSP430_Opcode_Decoded *msp430 = ld->msp430;
276 msp430->repeat_reg = srxt & 1;
277 msp430->repeats = dsxt;
278 msp430->zc = (srxt & 2) ? 1 : 0;
281 #define REPZC(s,d) encode_rep_zc (s, d, ld)
284 dopc_to_id (int dopc)
288 case 4: return MSO_mov;
289 case 5: return MSO_add;
290 case 6: return MSO_addc;
291 case 7: return MSO_subc;
292 case 8: return MSO_sub;
293 case 9: return MSO_cmp;
294 case 10: return MSO_dadd;
295 case 11: return MSO_bit;
296 case 12: return MSO_bic;
297 case 13: return MSO_bis;
298 case 14: return MSO_xor;
299 case 15: return MSO_and;
300 default: return MSO_unknown;
305 sopc_to_id (int sop, int c)
309 case 0: return MSO_rrc;
310 case 1: return MSO_swpb;
311 case 2: return MSO_rra;
312 case 3: return MSO_sxt;
313 case 4: return MSO_push;
314 case 5: return MSO_call;
315 case 6: return MSO_reti;
316 default: return MSO_unknown;
321 msp430_decode_opcode (unsigned long pc,
322 MSP430_Opcode_Decoded *msp430,
323 int (*getbyte)(void *),
326 LocalData lds, *ld = &lds;
327 unsigned char op_buf[20] = {0};
328 unsigned char *op = op_buf;
331 int srxt_bits, dsxt_bits;
334 lds.getbyte = getbyte;
340 memset (msp430, 0, sizeof (*msp430));
342 /* These are overridden by an extension word. */
350 /* 430X extention word. */
352 switch (op[0] & 0xff)
356 switch (op[1] & 0xf0)
361 /** 0000 srcr 0000 dstr MOVA @%1, %0 */
362 #line 439 "msp430-decode.opc"
363 int srcr AU = op[0] & 0x0f;
364 #line 439 "msp430-decode.opc"
365 int dstr AU = op[1] & 0x0f;
368 printf ("\033[33m%s\033[0m %02x %02x\n",
369 "/** 0000 srcr 0000 dstr MOVA @%1, %0 */",
371 printf (" srcr = 0x%x,", srcr);
372 printf (" dstr = 0x%x\n", dstr);
374 SYNTAX("MOVA @%1, %0");
375 #line 439 "msp430-decode.opc"
376 ID (MSO_mov); SM (srcr, 0); DR (dstr);
378 msp430->ofs_430x = 1;
385 /** 0000 srcr 0001 dstr MOVA @%1+, %0 */
386 #line 444 "msp430-decode.opc"
387 int srcr AU = op[0] & 0x0f;
388 #line 444 "msp430-decode.opc"
389 int dstr AU = op[1] & 0x0f;
392 printf ("\033[33m%s\033[0m %02x %02x\n",
393 "/** 0000 srcr 0001 dstr MOVA @%1+, %0 */",
395 printf (" srcr = 0x%x,", srcr);
396 printf (" dstr = 0x%x\n", dstr);
398 SYNTAX("MOVA @%1+, %0");
399 #line 444 "msp430-decode.opc"
400 ID (MSO_mov); SI (srcr); DR (dstr);
402 msp430->ofs_430x = 1;
409 /** 0000 srcr 0010 dstr MOVA &%1, %0 */
410 #line 449 "msp430-decode.opc"
411 int srcr AU = op[0] & 0x0f;
412 #line 449 "msp430-decode.opc"
413 int dstr AU = op[1] & 0x0f;
416 printf ("\033[33m%s\033[0m %02x %02x\n",
417 "/** 0000 srcr 0010 dstr MOVA &%1, %0 */",
419 printf (" srcr = 0x%x,", srcr);
420 printf (" dstr = 0x%x\n", dstr);
422 SYNTAX("MOVA &%1, %0");
423 #line 449 "msp430-decode.opc"
424 ID (MSO_mov); SA ((srcr << 16) + IMMU(2)); DR (dstr);
426 msp430->ofs_430x = 1;
433 /** 0000 srcr 0011 dstr MOVA %1, %0 */
434 #line 454 "msp430-decode.opc"
435 int srcr AU = op[0] & 0x0f;
436 #line 454 "msp430-decode.opc"
437 int dstr AU = op[1] & 0x0f;
440 printf ("\033[33m%s\033[0m %02x %02x\n",
441 "/** 0000 srcr 0011 dstr MOVA %1, %0 */",
443 printf (" srcr = 0x%x,", srcr);
444 printf (" dstr = 0x%x\n", dstr);
446 SYNTAX("MOVA %1, %0");
447 #line 454 "msp430-decode.opc"
448 ID (MSO_mov); SM (srcr, IMMS(2)); DR (dstr);
450 msp430->ofs_430x = 1;
458 /** 0000 bt00 010w dstr RRCM.A %c, %0 */
459 #line 521 "msp430-decode.opc"
460 int bt AU = (op[0] >> 2) & 0x03;
461 #line 521 "msp430-decode.opc"
462 int w AU = (op[1] >> 4) & 0x01;
463 #line 521 "msp430-decode.opc"
464 int dstr AU = op[1] & 0x0f;
467 printf ("\033[33m%s\033[0m %02x %02x\n",
468 "/** 0000 bt00 010w dstr RRCM.A %c, %0 */",
470 printf (" bt = 0x%x,", bt);
471 printf (" w = 0x%x,", w);
472 printf (" dstr = 0x%x\n", dstr);
474 SYNTAX("RRCM.A %c, %0");
475 #line 521 "msp430-decode.opc"
476 ID (MSO_rrc); DR (dstr); SR (dstr);
477 msp430->repeats = bt;
478 msp430->size = w ? 16 : 20;
479 msp430->ofs_430x = 1;
487 /** 0000 srcr 0110 dstr MOVA %1, &%0 */
488 #line 459 "msp430-decode.opc"
489 int srcr AU = op[0] & 0x0f;
490 #line 459 "msp430-decode.opc"
491 int dstr AU = op[1] & 0x0f;
494 printf ("\033[33m%s\033[0m %02x %02x\n",
495 "/** 0000 srcr 0110 dstr MOVA %1, &%0 */",
497 printf (" srcr = 0x%x,", srcr);
498 printf (" dstr = 0x%x\n", dstr);
500 SYNTAX("MOVA %1, &%0");
501 #line 459 "msp430-decode.opc"
502 ID (MSO_mov); SR (srcr); DA ((dstr << 16) + IMMU(2));
504 msp430->ofs_430x = 1;
511 /** 0000 srcr 0111 dstr MOVA %1, &%0 */
512 #line 464 "msp430-decode.opc"
513 int srcr AU = op[0] & 0x0f;
514 #line 464 "msp430-decode.opc"
515 int dstr AU = op[1] & 0x0f;
518 printf ("\033[33m%s\033[0m %02x %02x\n",
519 "/** 0000 srcr 0111 dstr MOVA %1, &%0 */",
521 printf (" srcr = 0x%x,", srcr);
522 printf (" dstr = 0x%x\n", dstr);
524 SYNTAX("MOVA %1, &%0");
525 #line 464 "msp430-decode.opc"
526 ID (MSO_mov); SR (srcr); DM (dstr, IMMS(2));
528 msp430->ofs_430x = 1;
535 /** 0000 srcr 1000 dstr MOVA %1, %0 */
536 #line 469 "msp430-decode.opc"
537 int srcr AU = op[0] & 0x0f;
538 #line 469 "msp430-decode.opc"
539 int dstr AU = op[1] & 0x0f;
542 printf ("\033[33m%s\033[0m %02x %02x\n",
543 "/** 0000 srcr 1000 dstr MOVA %1, %0 */",
545 printf (" srcr = 0x%x,", srcr);
546 printf (" dstr = 0x%x\n", dstr);
548 SYNTAX("MOVA %1, %0");
549 #line 469 "msp430-decode.opc"
550 ID (MSO_mov); SC ((srcr << 16) + IMMU(2)); DR (dstr);
552 msp430->ofs_430x = 1;
559 /** 0000 srcr 1001 dstr CMPA %1, %0 */
560 #line 474 "msp430-decode.opc"
561 int srcr AU = op[0] & 0x0f;
562 #line 474 "msp430-decode.opc"
563 int dstr AU = op[1] & 0x0f;
566 printf ("\033[33m%s\033[0m %02x %02x\n",
567 "/** 0000 srcr 1001 dstr CMPA %1, %0 */",
569 printf (" srcr = 0x%x,", srcr);
570 printf (" dstr = 0x%x\n", dstr);
572 SYNTAX("CMPA %1, %0");
573 #line 474 "msp430-decode.opc"
574 ID (MSO_cmp); SC ((srcr << 16) + IMMU(2)); DR (dstr);
576 msp430->ofs_430x = 1;
584 /** 0000 srcr 1010 dstr ADDA %1, %0 */
585 #line 480 "msp430-decode.opc"
586 int srcr AU = op[0] & 0x0f;
587 #line 480 "msp430-decode.opc"
588 int dstr AU = op[1] & 0x0f;
591 printf ("\033[33m%s\033[0m %02x %02x\n",
592 "/** 0000 srcr 1010 dstr ADDA %1, %0 */",
594 printf (" srcr = 0x%x,", srcr);
595 printf (" dstr = 0x%x\n", dstr);
597 SYNTAX("ADDA %1, %0");
598 #line 480 "msp430-decode.opc"
599 ID (MSO_add); SC ((srcr << 16) + IMMU(2)); DR (dstr);
601 msp430->ofs_430x = 1;
609 /** 0000 srcr 1011 dstr SUBA %1, %0 */
610 #line 486 "msp430-decode.opc"
611 int srcr AU = op[0] & 0x0f;
612 #line 486 "msp430-decode.opc"
613 int dstr AU = op[1] & 0x0f;
616 printf ("\033[33m%s\033[0m %02x %02x\n",
617 "/** 0000 srcr 1011 dstr SUBA %1, %0 */",
619 printf (" srcr = 0x%x,", srcr);
620 printf (" dstr = 0x%x\n", dstr);
622 SYNTAX("SUBA %1, %0");
623 #line 486 "msp430-decode.opc"
624 ID (MSO_sub); SC ((srcr << 16) + IMMU(2)); DR (dstr);
626 msp430->ofs_430x = 1;
634 /** 0000 srcr 1100 dstr MOVA %1, %0 */
635 #line 498 "msp430-decode.opc"
636 int srcr AU = op[0] & 0x0f;
637 #line 498 "msp430-decode.opc"
638 int dstr AU = op[1] & 0x0f;
641 printf ("\033[33m%s\033[0m %02x %02x\n",
642 "/** 0000 srcr 1100 dstr MOVA %1, %0 */",
644 printf (" srcr = 0x%x,", srcr);
645 printf (" dstr = 0x%x\n", dstr);
647 SYNTAX("MOVA %1, %0");
648 #line 498 "msp430-decode.opc"
649 ID (MSO_mov); SR (srcr); DR (dstr);
651 msp430->ofs_430x = 1;
658 /** 0000 srcr 1101 dstr CMPA %1, %0 */
659 #line 503 "msp430-decode.opc"
660 int srcr AU = op[0] & 0x0f;
661 #line 503 "msp430-decode.opc"
662 int dstr AU = op[1] & 0x0f;
665 printf ("\033[33m%s\033[0m %02x %02x\n",
666 "/** 0000 srcr 1101 dstr CMPA %1, %0 */",
668 printf (" srcr = 0x%x,", srcr);
669 printf (" dstr = 0x%x\n", dstr);
671 SYNTAX("CMPA %1, %0");
672 #line 503 "msp430-decode.opc"
673 ID (MSO_cmp); SR (srcr); DR (dstr);
675 msp430->ofs_430x = 1;
683 /** 0000 srcr 1110 dstr ADDA %1, %0 */
684 #line 509 "msp430-decode.opc"
685 int srcr AU = op[0] & 0x0f;
686 #line 509 "msp430-decode.opc"
687 int dstr AU = op[1] & 0x0f;
690 printf ("\033[33m%s\033[0m %02x %02x\n",
691 "/** 0000 srcr 1110 dstr ADDA %1, %0 */",
693 printf (" srcr = 0x%x,", srcr);
694 printf (" dstr = 0x%x\n", dstr);
696 SYNTAX("ADDA %1, %0");
697 #line 509 "msp430-decode.opc"
698 ID (MSO_add); SR (srcr); DR (dstr);
700 msp430->ofs_430x = 1;
708 /** 0000 srcr 1111 dstr SUBA %1, %0 */
709 #line 515 "msp430-decode.opc"
710 int srcr AU = op[0] & 0x0f;
711 #line 515 "msp430-decode.opc"
712 int dstr AU = op[1] & 0x0f;
715 printf ("\033[33m%s\033[0m %02x %02x\n",
716 "/** 0000 srcr 1111 dstr SUBA %1, %0 */",
718 printf (" srcr = 0x%x,", srcr);
719 printf (" dstr = 0x%x\n", dstr);
721 SYNTAX("SUBA %1, %0");
722 #line 515 "msp430-decode.opc"
723 ID (MSO_sub); SR (srcr); DR (dstr);
725 msp430->ofs_430x = 1;
734 switch (op[1] & 0xf0)
752 /** 0000 bt01 010w dstr RRAM.A %c, %0 */
753 #line 528 "msp430-decode.opc"
754 int bt AU = (op[0] >> 2) & 0x03;
755 #line 528 "msp430-decode.opc"
756 int w AU = (op[1] >> 4) & 0x01;
757 #line 528 "msp430-decode.opc"
758 int dstr AU = op[1] & 0x0f;
761 printf ("\033[33m%s\033[0m %02x %02x\n",
762 "/** 0000 bt01 010w dstr RRAM.A %c, %0 */",
764 printf (" bt = 0x%x,", bt);
765 printf (" w = 0x%x,", w);
766 printf (" dstr = 0x%x\n", dstr);
768 SYNTAX("RRAM.A %c, %0");
769 #line 528 "msp430-decode.opc"
770 ID (MSO_rra); DR (dstr); SR (dstr);
771 msp430->repeats = bt;
772 msp430->size = w ? 16 : 20;
773 msp430->ofs_430x = 1;
791 goto op_semantics_10;
794 goto op_semantics_11;
797 goto op_semantics_12;
800 goto op_semantics_13;
803 goto op_semantics_14;
806 goto op_semantics_15;
812 switch (op[1] & 0xf0)
830 /** 0000 bt10 010w dstr RLAM.A %c, %0 */
831 #line 535 "msp430-decode.opc"
832 int bt AU = (op[0] >> 2) & 0x03;
833 #line 535 "msp430-decode.opc"
834 int w AU = (op[1] >> 4) & 0x01;
835 #line 535 "msp430-decode.opc"
836 int dstr AU = op[1] & 0x0f;
839 printf ("\033[33m%s\033[0m %02x %02x\n",
840 "/** 0000 bt10 010w dstr RLAM.A %c, %0 */",
842 printf (" bt = 0x%x,", bt);
843 printf (" w = 0x%x,", w);
844 printf (" dstr = 0x%x\n", dstr);
846 SYNTAX("RLAM.A %c, %0");
847 #line 535 "msp430-decode.opc"
848 ID (MSO_add); DR (dstr); SR (dstr);
849 msp430->repeats = bt;
850 msp430->size = w ? 16 : 20;
851 msp430->ofs_430x = 1;
869 goto op_semantics_10;
872 goto op_semantics_11;
875 goto op_semantics_12;
878 goto op_semantics_13;
881 goto op_semantics_14;
884 goto op_semantics_15;
890 switch (op[1] & 0xf0)
908 /** 0000 bt11 010w dstr RRUM.A %c, %0 */
909 #line 542 "msp430-decode.opc"
910 int bt AU = (op[0] >> 2) & 0x03;
911 #line 542 "msp430-decode.opc"
912 int w AU = (op[1] >> 4) & 0x01;
913 #line 542 "msp430-decode.opc"
914 int dstr AU = op[1] & 0x0f;
917 printf ("\033[33m%s\033[0m %02x %02x\n",
918 "/** 0000 bt11 010w dstr RRUM.A %c, %0 */",
920 printf (" bt = 0x%x,", bt);
921 printf (" w = 0x%x,", w);
922 printf (" dstr = 0x%x\n", dstr);
924 SYNTAX("RRUM.A %c, %0");
925 #line 542 "msp430-decode.opc"
926 ID (MSO_rru); DR (dstr); SR (dstr);
927 msp430->repeats = bt;
928 msp430->size = w ? 16 : 20;
929 msp430->ofs_430x = 1;
947 goto op_semantics_10;
950 goto op_semantics_11;
953 goto op_semantics_12;
956 goto op_semantics_13;
959 goto op_semantics_14;
962 goto op_semantics_15;
968 switch (op[1] & 0xf0)
999 goto op_semantics_10;
1002 goto op_semantics_11;
1005 goto op_semantics_12;
1008 goto op_semantics_13;
1011 goto op_semantics_14;
1014 goto op_semantics_15;
1020 switch (op[1] & 0xf0)
1023 goto op_semantics_1;
1026 goto op_semantics_2;
1029 goto op_semantics_3;
1032 goto op_semantics_4;
1036 goto op_semantics_16;
1039 goto op_semantics_6;
1042 goto op_semantics_7;
1045 goto op_semantics_8;
1048 goto op_semantics_9;
1051 goto op_semantics_10;
1054 goto op_semantics_11;
1057 goto op_semantics_12;
1060 goto op_semantics_13;
1063 goto op_semantics_14;
1066 goto op_semantics_15;
1072 switch (op[1] & 0xf0)
1075 goto op_semantics_1;
1078 goto op_semantics_2;
1081 goto op_semantics_3;
1084 goto op_semantics_4;
1088 goto op_semantics_17;
1091 goto op_semantics_6;
1094 goto op_semantics_7;
1097 goto op_semantics_8;
1100 goto op_semantics_9;
1103 goto op_semantics_10;
1106 goto op_semantics_11;
1109 goto op_semantics_12;
1112 goto op_semantics_13;
1115 goto op_semantics_14;
1118 goto op_semantics_15;
1124 switch (op[1] & 0xf0)
1127 goto op_semantics_1;
1130 goto op_semantics_2;
1133 goto op_semantics_3;
1136 goto op_semantics_4;
1140 goto op_semantics_18;
1143 goto op_semantics_6;
1146 goto op_semantics_7;
1149 goto op_semantics_8;
1152 goto op_semantics_9;
1155 goto op_semantics_10;
1158 goto op_semantics_11;
1161 goto op_semantics_12;
1164 goto op_semantics_13;
1167 goto op_semantics_14;
1170 goto op_semantics_15;
1176 switch (op[1] & 0xf0)
1179 goto op_semantics_1;
1182 goto op_semantics_2;
1185 goto op_semantics_3;
1188 goto op_semantics_4;
1192 goto op_semantics_5;
1195 goto op_semantics_6;
1198 goto op_semantics_7;
1201 goto op_semantics_8;
1204 goto op_semantics_9;
1207 goto op_semantics_10;
1210 goto op_semantics_11;
1213 goto op_semantics_12;
1216 goto op_semantics_13;
1219 goto op_semantics_14;
1222 goto op_semantics_15;
1228 switch (op[1] & 0xf0)
1231 goto op_semantics_1;
1234 goto op_semantics_2;
1237 goto op_semantics_3;
1240 goto op_semantics_4;
1244 goto op_semantics_16;
1247 goto op_semantics_6;
1250 goto op_semantics_7;
1253 goto op_semantics_8;
1256 goto op_semantics_9;
1259 goto op_semantics_10;
1262 goto op_semantics_11;
1265 goto op_semantics_12;
1268 goto op_semantics_13;
1271 goto op_semantics_14;
1274 goto op_semantics_15;
1280 switch (op[1] & 0xf0)
1283 goto op_semantics_1;
1286 goto op_semantics_2;
1289 goto op_semantics_3;
1292 goto op_semantics_4;
1296 goto op_semantics_17;
1299 goto op_semantics_6;
1302 goto op_semantics_7;
1305 goto op_semantics_8;
1308 goto op_semantics_9;
1311 goto op_semantics_10;
1314 goto op_semantics_11;
1317 goto op_semantics_12;
1320 goto op_semantics_13;
1323 goto op_semantics_14;
1326 goto op_semantics_15;
1332 switch (op[1] & 0xf0)
1335 goto op_semantics_1;
1338 goto op_semantics_2;
1341 goto op_semantics_3;
1344 goto op_semantics_4;
1348 goto op_semantics_18;
1351 goto op_semantics_6;
1354 goto op_semantics_7;
1357 goto op_semantics_8;
1360 goto op_semantics_9;
1363 goto op_semantics_10;
1366 goto op_semantics_11;
1369 goto op_semantics_12;
1372 goto op_semantics_13;
1375 goto op_semantics_14;
1378 goto op_semantics_15;
1384 switch (op[1] & 0xf0)
1387 goto op_semantics_1;
1390 goto op_semantics_2;
1393 goto op_semantics_3;
1396 goto op_semantics_4;
1400 goto op_semantics_5;
1403 goto op_semantics_6;
1406 goto op_semantics_7;
1409 goto op_semantics_8;
1412 goto op_semantics_9;
1415 goto op_semantics_10;
1418 goto op_semantics_11;
1421 goto op_semantics_12;
1424 goto op_semantics_13;
1427 goto op_semantics_14;
1430 goto op_semantics_15;
1436 switch (op[1] & 0xf0)
1439 goto op_semantics_1;
1442 goto op_semantics_2;
1445 goto op_semantics_3;
1448 goto op_semantics_4;
1452 goto op_semantics_16;
1455 goto op_semantics_6;
1458 goto op_semantics_7;
1461 goto op_semantics_8;
1464 goto op_semantics_9;
1467 goto op_semantics_10;
1470 goto op_semantics_11;
1473 goto op_semantics_12;
1476 goto op_semantics_13;
1479 goto op_semantics_14;
1482 goto op_semantics_15;
1488 switch (op[1] & 0xf0)
1491 goto op_semantics_1;
1494 goto op_semantics_2;
1497 goto op_semantics_3;
1500 goto op_semantics_4;
1504 goto op_semantics_17;
1507 goto op_semantics_6;
1510 goto op_semantics_7;
1513 goto op_semantics_8;
1516 goto op_semantics_9;
1519 goto op_semantics_10;
1522 goto op_semantics_11;
1525 goto op_semantics_12;
1528 goto op_semantics_13;
1531 goto op_semantics_14;
1534 goto op_semantics_15;
1540 switch (op[1] & 0xf0)
1543 goto op_semantics_1;
1546 goto op_semantics_2;
1549 goto op_semantics_3;
1552 goto op_semantics_4;
1556 goto op_semantics_18;
1559 goto op_semantics_6;
1562 goto op_semantics_7;
1565 goto op_semantics_8;
1568 goto op_semantics_9;
1571 goto op_semantics_10;
1574 goto op_semantics_11;
1577 goto op_semantics_12;
1580 goto op_semantics_13;
1583 goto op_semantics_14;
1586 goto op_semantics_15;
1592 switch (op[1] & 0x00)
1597 /** 0001 00so c b ad dreg %S%b %1 */
1598 #line 395 "msp430-decode.opc"
1599 int so AU = op[0] & 0x03;
1600 #line 395 "msp430-decode.opc"
1601 int c AU = (op[1] >> 7) & 0x01;
1602 #line 395 "msp430-decode.opc"
1603 int b AU = (op[1] >> 6) & 0x01;
1604 #line 395 "msp430-decode.opc"
1605 int ad AU = (op[1] >> 4) & 0x03;
1606 #line 395 "msp430-decode.opc"
1607 int dreg AU = op[1] & 0x0f;
1610 printf ("\033[33m%s\033[0m %02x %02x\n",
1611 "/** 0001 00so c b ad dreg %S%b %1 */",
1613 printf (" so = 0x%x,", so);
1614 printf (" c = 0x%x,", c);
1615 printf (" b = 0x%x,", b);
1616 printf (" ad = 0x%x,", ad);
1617 printf (" dreg = 0x%x\n", dreg);
1620 #line 395 "msp430-decode.opc"
1622 ID (sopc_to_id (so,c)); ASX (dreg, ad, srxt_bits); ABW (al_bit, b);
1625 REPZC (srxt_bits, dsxt_bits);
1627 /* The helper functions encode for source, but it's
1628 both source and dest, with a few documented exceptions. */
1629 msp430->op[0] = msp430->op[1];
1631 /* RETI ignores the operand. */
1632 if (msp430->id == MSO_reti)
1633 msp430->syntax = "%S";
1637 case MSO_rrc: F_VNZC; break;
1638 case MSO_swpb: F_____; break;
1639 case MSO_rra: F_0NZC; break;
1640 case MSO_sxt: F_0NZC; break;
1641 case MSO_push: F_____; break;
1642 case MSO_call: F_____; break;
1643 case MSO_reti: F_VNZC; break;
1647 /* 20xx 0010 0000 ---- ----
1648 3cxx 0011 1100 ---- ----
1649 001j mp-- ---- ----. */
1656 switch (op[1] & 0x00)
1659 goto op_semantics_19;
1665 switch (op[1] & 0x00)
1668 goto op_semantics_19;
1674 switch (op[1] & 0xff)
1678 /** 0001 0011 0000 0000 RETI */
1681 printf ("\033[33m%s\033[0m %02x %02x\n",
1682 "/** 0001 0011 0000 0000 RETI */",
1686 #line 549 "msp430-decode.opc"
1689 msp430->ofs_430x = 1;
1836 goto op_semantics_19;
1903 /** 0001 0011 01as dstr CALLA %0 */
1904 #line 554 "msp430-decode.opc"
1905 int as AU = (op[1] >> 4) & 0x03;
1906 #line 554 "msp430-decode.opc"
1907 int dstr AU = op[1] & 0x0f;
1910 printf ("\033[33m%s\033[0m %02x %02x\n",
1911 "/** 0001 0011 01as dstr CALLA %0 */",
1913 printf (" as = 0x%x,", as);
1914 printf (" dstr = 0x%x\n", dstr);
1917 #line 554 "msp430-decode.opc"
1918 ID (MSO_call); AS (dstr, as);
1920 msp430->ofs_430x = 1;
1941 /** 0001 0011 1000 extb CALLA %0 */
1942 #line 559 "msp430-decode.opc"
1943 int extb AU = op[1] & 0x0f;
1946 printf ("\033[33m%s\033[0m %02x %02x\n",
1947 "/** 0001 0011 1000 extb CALLA %0 */",
1949 printf (" extb = 0x%x\n", extb);
1952 #line 559 "msp430-decode.opc"
1953 ID (MSO_call); SA (IMMU(2) | (extb << 16));
1955 msp430->ofs_430x = 1;
1976 /** 0001 0011 1001 extb CALLA %0 */
1977 #line 564 "msp430-decode.opc"
1978 int extb AU = op[1] & 0x0f;
1981 printf ("\033[33m%s\033[0m %02x %02x\n",
1982 "/** 0001 0011 1001 extb CALLA %0 */",
1984 printf (" extb = 0x%x\n", extb);
1987 #line 564 "msp430-decode.opc"
1988 raddr = IMMU(2) | (extb << 16);
1989 if (raddr & 0x80000)
1991 ID (MSO_call); SA (pc + raddr + msp430->n_bytes);
1993 msp430->ofs_430x = 1;
2014 /** 0001 0011 1011 extb CALLA %0 */
2015 #line 572 "msp430-decode.opc"
2016 int extb AU = op[1] & 0x0f;
2019 printf ("\033[33m%s\033[0m %02x %02x\n",
2020 "/** 0001 0011 1011 extb CALLA %0 */",
2022 printf (" extb = 0x%x\n", extb);
2025 #line 572 "msp430-decode.opc"
2026 ID (MSO_call); SC (IMMU(2) | (extb << 16));
2028 msp430->ofs_430x = 1;
2036 switch (op[1] & 0x00)
2041 /** 0001 010w bits srcr PUSHM.A %0 */
2042 #line 577 "msp430-decode.opc"
2043 int w AU = op[0] & 0x01;
2044 #line 577 "msp430-decode.opc"
2045 int bits AU = (op[1] >> 4) & 0x0f;
2046 #line 577 "msp430-decode.opc"
2047 int srcr AU = op[1] & 0x0f;
2050 printf ("\033[33m%s\033[0m %02x %02x\n",
2051 "/** 0001 010w bits srcr PUSHM.A %0 */",
2053 printf (" w = 0x%x,", w);
2054 printf (" bits = 0x%x,", bits);
2055 printf (" srcr = 0x%x\n", srcr);
2057 SYNTAX("PUSHM.A %0");
2058 #line 577 "msp430-decode.opc"
2059 ID (MSO_push); SR (srcr);
2060 msp430->size = w ? 16 : 20;
2061 msp430->repeats = bits;
2062 msp430->ofs_430x = 1;
2070 switch (op[1] & 0x00)
2073 goto op_semantics_20;
2079 switch (op[1] & 0x00)
2084 /** 0001 011w bits dstr POPM.A %0 */
2085 #line 583 "msp430-decode.opc"
2086 int w AU = op[0] & 0x01;
2087 #line 583 "msp430-decode.opc"
2088 int bits AU = (op[1] >> 4) & 0x0f;
2089 #line 583 "msp430-decode.opc"
2090 int dstr AU = op[1] & 0x0f;
2093 printf ("\033[33m%s\033[0m %02x %02x\n",
2094 "/** 0001 011w bits dstr POPM.A %0 */",
2096 printf (" w = 0x%x,", w);
2097 printf (" bits = 0x%x,", bits);
2098 printf (" dstr = 0x%x\n", dstr);
2100 SYNTAX("POPM.A %0");
2101 #line 583 "msp430-decode.opc"
2102 ID (MSO_pop); DR (dstr);
2103 msp430->size = w ? 16 : 20;
2104 msp430->repeats = bits;
2105 msp430->ofs_430x = 1;
2113 switch (op[1] & 0x00)
2116 goto op_semantics_21;
2122 switch (op[1] & 0x30)
2127 /** 0001 1srx t l 00 dsxt 430x */
2128 #line 351 "msp430-decode.opc"
2129 int srx AU = op[0] & 0x07;
2130 #line 351 "msp430-decode.opc"
2131 int t AU = (op[1] >> 7) & 0x01;
2132 #line 351 "msp430-decode.opc"
2133 int l AU = (op[1] >> 6) & 0x01;
2134 #line 351 "msp430-decode.opc"
2135 int dsxt AU = op[1] & 0x0f;
2138 printf ("\033[33m%s\033[0m %02x %02x\n",
2139 "/** 0001 1srx t l 00 dsxt 430x */",
2141 printf (" srx = 0x%x,", srx);
2142 printf (" t = 0x%x,", t);
2143 printf (" l = 0x%x,", l);
2144 printf (" dsxt = 0x%x\n", dsxt);
2147 #line 351 "msp430-decode.opc"
2150 srxt_bits = srx * 2 + t;
2152 op = op_buf + lds.op_ptr;
2153 msp430->ofs_430x = 1;
2154 goto post_extension_word;
2157 opcode:4 sreg:4 Ad:1 BW:1 As:2 Dreg:4
2160 opcode:9 BW:1 Ad:2 DSreg:4
2163 opcode:3 Cond:3 pcrel:10. */
2165 /* Double-Operand "opcode" fields. */
2169 default: UNSUPPORTED(); break;
2174 switch (op[1] & 0x30)
2177 goto op_semantics_22;
2179 default: UNSUPPORTED(); break;
2184 switch (op[1] & 0x30)
2187 goto op_semantics_22;
2189 default: UNSUPPORTED(); break;
2194 switch (op[1] & 0x30)
2197 goto op_semantics_22;
2199 default: UNSUPPORTED(); break;
2204 switch (op[1] & 0x30)
2207 goto op_semantics_22;
2209 default: UNSUPPORTED(); break;
2214 switch (op[1] & 0x30)
2217 goto op_semantics_22;
2219 default: UNSUPPORTED(); break;
2224 switch (op[1] & 0x30)
2227 goto op_semantics_22;
2229 default: UNSUPPORTED(); break;
2234 switch (op[1] & 0x30)
2237 goto op_semantics_22;
2239 default: UNSUPPORTED(); break;
2244 switch (op[1] & 0x00)
2249 /** 001jmp aa addrlsbs %J %1 */
2250 #line 425 "msp430-decode.opc"
2251 int jmp AU = (op[0] >> 2) & 0x07;
2252 #line 425 "msp430-decode.opc"
2253 int aa AU = op[0] & 0x03;
2254 #line 425 "msp430-decode.opc"
2255 int addrlsbs AU = op[1];
2258 printf ("\033[33m%s\033[0m %02x %02x\n",
2259 "/** 001jmp aa addrlsbs %J %1 */",
2261 printf (" jmp = 0x%x,", jmp);
2262 printf (" aa = 0x%x,", aa);
2263 printf (" addrlsbs = 0x%x\n", addrlsbs);
2266 #line 425 "msp430-decode.opc"
2268 raddr = (aa << 9) | (addrlsbs << 1);
2270 raddr = raddr - 0x800;
2271 /* This is a pc-relative jump, but we don't use SM because that
2272 would load the target address from the memory at X(PC), not use
2273 PC+X *as* the address. So we use SC to use the address, not the
2274 data at that address. */
2275 ID (MSO_jmp); SC (pc + raddr + msp430->n_bytes);
2278 /* Extended instructions. */
2286 switch (op[1] & 0x00)
2289 goto op_semantics_23;
2295 switch (op[1] & 0x00)
2298 goto op_semantics_23;
2304 switch (op[1] & 0x00)
2307 goto op_semantics_23;
2313 switch (op[1] & 0x00)
2316 goto op_semantics_23;
2322 switch (op[1] & 0x00)
2325 goto op_semantics_23;
2331 switch (op[1] & 0x00)
2334 goto op_semantics_23;
2340 switch (op[1] & 0x00)
2343 goto op_semantics_23;
2349 switch (op[1] & 0x00)
2352 goto op_semantics_23;
2358 switch (op[1] & 0x00)
2361 goto op_semantics_23;
2367 switch (op[1] & 0x00)
2370 goto op_semantics_23;
2376 switch (op[1] & 0x00)
2379 goto op_semantics_23;
2385 switch (op[1] & 0x00)
2388 goto op_semantics_23;
2394 switch (op[1] & 0x00)
2397 goto op_semantics_23;
2403 switch (op[1] & 0x00)
2406 goto op_semantics_23;
2412 switch (op[1] & 0x00)
2415 goto op_semantics_23;
2421 switch (op[1] & 0x00)
2424 goto op_semantics_23;
2430 switch (op[1] & 0x00)
2433 goto op_semantics_23;
2439 switch (op[1] & 0x00)
2442 goto op_semantics_23;
2448 switch (op[1] & 0x00)
2451 goto op_semantics_23;
2457 switch (op[1] & 0x00)
2460 goto op_semantics_23;
2466 switch (op[1] & 0x00)
2469 goto op_semantics_23;
2475 switch (op[1] & 0x00)
2478 goto op_semantics_23;
2484 switch (op[1] & 0x00)
2487 goto op_semantics_23;
2493 switch (op[1] & 0x00)
2496 goto op_semantics_23;
2502 switch (op[1] & 0x00)
2505 goto op_semantics_23;
2511 switch (op[1] & 0x00)
2514 goto op_semantics_23;
2520 switch (op[1] & 0x00)
2523 goto op_semantics_23;
2529 switch (op[1] & 0x00)
2532 goto op_semantics_23;
2538 switch (op[1] & 0x00)
2541 goto op_semantics_23;
2547 switch (op[1] & 0x00)
2550 goto op_semantics_23;
2556 switch (op[1] & 0x00)
2559 goto op_semantics_23;
2565 switch (op[1] & 0x00)
2570 /** dopc sreg a b as dreg %D%b %1,%0 */
2571 #line 372 "msp430-decode.opc"
2572 int dopc AU = (op[0] >> 4) & 0x0f;
2573 #line 372 "msp430-decode.opc"
2574 int sreg AU = op[0] & 0x0f;
2575 #line 372 "msp430-decode.opc"
2576 int a AU = (op[1] >> 7) & 0x01;
2577 #line 372 "msp430-decode.opc"
2578 int b AU = (op[1] >> 6) & 0x01;
2579 #line 372 "msp430-decode.opc"
2580 int as AU = (op[1] >> 4) & 0x03;
2581 #line 372 "msp430-decode.opc"
2582 int dreg AU = op[1] & 0x0f;
2585 printf ("\033[33m%s\033[0m %02x %02x\n",
2586 "/** dopc sreg a b as dreg %D%b %1,%0 */",
2588 printf (" dopc = 0x%x,", dopc);
2589 printf (" sreg = 0x%x,", sreg);
2590 printf (" a = 0x%x,", a);
2591 printf (" b = 0x%x,", b);
2592 printf (" as = 0x%x,", as);
2593 printf (" dreg = 0x%x\n", dreg);
2595 SYNTAX("%D%b %1,%0");
2596 #line 372 "msp430-decode.opc"
2598 ID (dopc_to_id (dopc)); ASX (sreg, as, srxt_bits); ADX (dreg, a, dsxt_bits); ABW (al_bit, b);
2599 if (a == 0 && as == 0)
2600 REPZC (srxt_bits, dsxt_bits);
2604 case MSO_mov: F_____; break;
2605 case MSO_add: F_VNZC; break;
2606 case MSO_addc: F_VNZC; break;
2607 case MSO_subc: F_VNZC; break;
2608 case MSO_sub: F_VNZC; break;
2609 case MSO_cmp: F_VNZC; break;
2610 case MSO_dadd: F_VNZC; break;
2611 case MSO_bit: F_0NZC; break;
2612 case MSO_bic: F_____; break;
2613 case MSO_bis: F_____; break;
2614 case MSO_xor: F_VNZC; break;
2615 case MSO_and: F_0NZC; break;
2625 switch (op[1] & 0x00)
2628 goto op_semantics_24;
2634 switch (op[1] & 0x00)
2637 goto op_semantics_24;
2643 switch (op[1] & 0x00)
2646 goto op_semantics_24;
2652 switch (op[1] & 0x00)
2655 goto op_semantics_24;
2661 switch (op[1] & 0x00)
2664 goto op_semantics_24;
2670 switch (op[1] & 0x00)
2673 goto op_semantics_24;
2679 switch (op[1] & 0x00)
2682 goto op_semantics_24;
2688 switch (op[1] & 0x00)
2691 goto op_semantics_24;
2697 switch (op[1] & 0x00)
2700 goto op_semantics_24;
2706 switch (op[1] & 0x00)
2709 goto op_semantics_24;
2715 switch (op[1] & 0x00)
2718 goto op_semantics_24;
2724 switch (op[1] & 0x00)
2727 goto op_semantics_24;
2733 switch (op[1] & 0x00)
2736 goto op_semantics_24;
2742 switch (op[1] & 0x00)
2745 goto op_semantics_24;
2751 switch (op[1] & 0x00)
2754 goto op_semantics_24;
2760 switch (op[1] & 0x00)
2763 goto op_semantics_24;
2769 switch (op[1] & 0x00)
2772 goto op_semantics_24;
2778 switch (op[1] & 0x00)
2781 goto op_semantics_24;
2787 switch (op[1] & 0x00)
2790 goto op_semantics_24;
2796 switch (op[1] & 0x00)
2799 goto op_semantics_24;
2805 switch (op[1] & 0x00)
2808 goto op_semantics_24;
2814 switch (op[1] & 0x00)
2817 goto op_semantics_24;
2823 switch (op[1] & 0x00)
2826 goto op_semantics_24;
2832 switch (op[1] & 0x00)
2835 goto op_semantics_24;
2841 switch (op[1] & 0x00)
2844 goto op_semantics_24;
2850 switch (op[1] & 0x00)
2853 goto op_semantics_24;
2859 switch (op[1] & 0x00)
2862 goto op_semantics_24;
2868 switch (op[1] & 0x00)
2871 goto op_semantics_24;
2877 switch (op[1] & 0x00)
2880 goto op_semantics_24;
2886 switch (op[1] & 0x00)
2889 goto op_semantics_24;
2895 switch (op[1] & 0x00)
2898 goto op_semantics_24;
2904 switch (op[1] & 0x00)
2907 goto op_semantics_24;
2913 switch (op[1] & 0x00)
2916 goto op_semantics_24;
2922 switch (op[1] & 0x00)
2925 goto op_semantics_24;
2931 switch (op[1] & 0x00)
2934 goto op_semantics_24;
2940 switch (op[1] & 0x00)
2943 goto op_semantics_24;
2949 switch (op[1] & 0x00)
2952 goto op_semantics_24;
2958 switch (op[1] & 0x00)
2961 goto op_semantics_24;
2967 switch (op[1] & 0x00)
2970 goto op_semantics_24;
2976 switch (op[1] & 0x00)
2979 goto op_semantics_24;
2985 switch (op[1] & 0x00)
2988 goto op_semantics_24;
2994 switch (op[1] & 0x00)
2997 goto op_semantics_24;
3003 switch (op[1] & 0x00)
3006 goto op_semantics_24;
3012 switch (op[1] & 0x00)
3015 goto op_semantics_24;
3021 switch (op[1] & 0x00)
3024 goto op_semantics_24;
3030 switch (op[1] & 0x00)
3033 goto op_semantics_24;
3039 switch (op[1] & 0x00)
3042 goto op_semantics_24;
3048 switch (op[1] & 0x00)
3051 goto op_semantics_24;
3057 switch (op[1] & 0x00)
3060 goto op_semantics_24;
3066 switch (op[1] & 0x00)
3069 goto op_semantics_24;
3075 switch (op[1] & 0x00)
3078 goto op_semantics_24;
3084 switch (op[1] & 0x00)
3087 goto op_semantics_24;
3093 switch (op[1] & 0x00)
3096 goto op_semantics_24;
3102 switch (op[1] & 0x00)
3105 goto op_semantics_24;
3111 switch (op[1] & 0x00)
3114 goto op_semantics_24;
3120 switch (op[1] & 0x00)
3123 goto op_semantics_24;
3129 switch (op[1] & 0x00)
3132 goto op_semantics_24;
3138 switch (op[1] & 0x00)
3141 goto op_semantics_24;
3147 switch (op[1] & 0x00)
3150 goto op_semantics_24;
3156 switch (op[1] & 0x00)
3159 goto op_semantics_24;
3165 switch (op[1] & 0x00)
3168 goto op_semantics_24;
3174 switch (op[1] & 0x00)
3177 goto op_semantics_24;
3183 switch (op[1] & 0x00)
3186 goto op_semantics_24;
3192 switch (op[1] & 0x00)
3195 goto op_semantics_24;
3201 switch (op[1] & 0x00)
3204 goto op_semantics_24;
3210 switch (op[1] & 0x00)
3213 goto op_semantics_24;
3219 switch (op[1] & 0x00)
3222 goto op_semantics_24;
3228 switch (op[1] & 0x00)
3231 goto op_semantics_24;
3237 switch (op[1] & 0x00)
3240 goto op_semantics_24;
3246 switch (op[1] & 0x00)
3249 goto op_semantics_24;
3255 switch (op[1] & 0x00)
3258 goto op_semantics_24;
3264 switch (op[1] & 0x00)
3267 goto op_semantics_24;
3273 switch (op[1] & 0x00)
3276 goto op_semantics_24;
3282 switch (op[1] & 0x00)
3285 goto op_semantics_24;
3291 switch (op[1] & 0x00)
3294 goto op_semantics_24;
3300 switch (op[1] & 0x00)
3303 goto op_semantics_24;
3309 switch (op[1] & 0x00)
3312 goto op_semantics_24;
3318 switch (op[1] & 0x00)
3321 goto op_semantics_24;
3327 switch (op[1] & 0x00)
3330 goto op_semantics_24;
3336 switch (op[1] & 0x00)
3339 goto op_semantics_24;
3345 switch (op[1] & 0x00)
3348 goto op_semantics_24;
3354 switch (op[1] & 0x00)
3357 goto op_semantics_24;
3363 switch (op[1] & 0x00)
3366 goto op_semantics_24;
3372 switch (op[1] & 0x00)
3375 goto op_semantics_24;
3381 switch (op[1] & 0x00)
3384 goto op_semantics_24;
3390 switch (op[1] & 0x00)
3393 goto op_semantics_24;
3399 switch (op[1] & 0x00)
3402 goto op_semantics_24;
3408 switch (op[1] & 0x00)
3411 goto op_semantics_24;
3417 switch (op[1] & 0x00)
3420 goto op_semantics_24;
3426 switch (op[1] & 0x00)
3429 goto op_semantics_24;
3435 switch (op[1] & 0x00)
3438 goto op_semantics_24;
3444 switch (op[1] & 0x00)
3447 goto op_semantics_24;
3453 switch (op[1] & 0x00)
3456 goto op_semantics_24;
3462 switch (op[1] & 0x00)
3465 goto op_semantics_24;
3471 switch (op[1] & 0x00)
3474 goto op_semantics_24;
3480 switch (op[1] & 0x00)
3483 goto op_semantics_24;
3489 switch (op[1] & 0x00)
3492 goto op_semantics_24;
3498 switch (op[1] & 0x00)
3501 goto op_semantics_24;
3507 switch (op[1] & 0x00)
3510 goto op_semantics_24;
3516 switch (op[1] & 0x00)
3519 goto op_semantics_24;
3525 switch (op[1] & 0x00)
3528 goto op_semantics_24;
3534 switch (op[1] & 0x00)
3537 goto op_semantics_24;
3543 switch (op[1] & 0x00)
3546 goto op_semantics_24;
3552 switch (op[1] & 0x00)
3555 goto op_semantics_24;
3561 switch (op[1] & 0x00)
3564 goto op_semantics_24;
3570 switch (op[1] & 0x00)
3573 goto op_semantics_24;
3579 switch (op[1] & 0x00)
3582 goto op_semantics_24;
3588 switch (op[1] & 0x00)
3591 goto op_semantics_24;
3597 switch (op[1] & 0x00)
3600 goto op_semantics_24;
3606 switch (op[1] & 0x00)
3609 goto op_semantics_24;
3615 switch (op[1] & 0x00)
3618 goto op_semantics_24;
3624 switch (op[1] & 0x00)
3627 goto op_semantics_24;
3633 switch (op[1] & 0x00)
3636 goto op_semantics_24;
3642 switch (op[1] & 0x00)
3645 goto op_semantics_24;
3651 switch (op[1] & 0x00)
3654 goto op_semantics_24;
3660 switch (op[1] & 0x00)
3663 goto op_semantics_24;
3669 switch (op[1] & 0x00)
3672 goto op_semantics_24;
3678 switch (op[1] & 0x00)
3681 goto op_semantics_24;
3687 switch (op[1] & 0x00)
3690 goto op_semantics_24;
3696 switch (op[1] & 0x00)
3699 goto op_semantics_24;
3705 switch (op[1] & 0x00)
3708 goto op_semantics_24;
3714 switch (op[1] & 0x00)
3717 goto op_semantics_24;
3723 switch (op[1] & 0x00)
3726 goto op_semantics_24;
3732 switch (op[1] & 0x00)
3735 goto op_semantics_24;
3741 switch (op[1] & 0x00)
3744 goto op_semantics_24;
3750 switch (op[1] & 0x00)
3753 goto op_semantics_24;
3759 switch (op[1] & 0x00)
3762 goto op_semantics_24;
3768 switch (op[1] & 0x00)
3771 goto op_semantics_24;
3777 switch (op[1] & 0x00)
3780 goto op_semantics_24;
3786 switch (op[1] & 0x00)
3789 goto op_semantics_24;
3795 switch (op[1] & 0x00)
3798 goto op_semantics_24;
3804 switch (op[1] & 0x00)
3807 goto op_semantics_24;
3813 switch (op[1] & 0x00)
3816 goto op_semantics_24;
3822 switch (op[1] & 0x00)
3825 goto op_semantics_24;
3831 switch (op[1] & 0x00)
3834 goto op_semantics_24;
3840 switch (op[1] & 0x00)
3843 goto op_semantics_24;
3849 switch (op[1] & 0x00)
3852 goto op_semantics_24;
3858 switch (op[1] & 0x00)
3861 goto op_semantics_24;
3867 switch (op[1] & 0x00)
3870 goto op_semantics_24;
3876 switch (op[1] & 0x00)
3879 goto op_semantics_24;
3885 switch (op[1] & 0x00)
3888 goto op_semantics_24;
3894 switch (op[1] & 0x00)
3897 goto op_semantics_24;
3903 switch (op[1] & 0x00)
3906 goto op_semantics_24;
3912 switch (op[1] & 0x00)
3915 goto op_semantics_24;
3921 switch (op[1] & 0x00)
3924 goto op_semantics_24;
3930 switch (op[1] & 0x00)
3933 goto op_semantics_24;
3939 switch (op[1] & 0x00)
3942 goto op_semantics_24;
3948 switch (op[1] & 0x00)
3951 goto op_semantics_24;
3957 switch (op[1] & 0x00)
3960 goto op_semantics_24;
3966 switch (op[1] & 0x00)
3969 goto op_semantics_24;
3975 switch (op[1] & 0x00)
3978 goto op_semantics_24;
3984 switch (op[1] & 0x00)
3987 goto op_semantics_24;
3993 switch (op[1] & 0x00)
3996 goto op_semantics_24;
4002 switch (op[1] & 0x00)
4005 goto op_semantics_24;
4011 switch (op[1] & 0x00)
4014 goto op_semantics_24;
4020 switch (op[1] & 0x00)
4023 goto op_semantics_24;
4029 switch (op[1] & 0x00)
4032 goto op_semantics_24;
4038 switch (op[1] & 0x00)
4041 goto op_semantics_24;
4047 switch (op[1] & 0x00)
4050 goto op_semantics_24;
4056 switch (op[1] & 0x00)
4059 goto op_semantics_24;
4065 switch (op[1] & 0x00)
4068 goto op_semantics_24;
4074 switch (op[1] & 0x00)
4077 goto op_semantics_24;
4083 switch (op[1] & 0x00)
4086 goto op_semantics_24;
4092 switch (op[1] & 0x00)
4095 goto op_semantics_24;
4101 switch (op[1] & 0x00)
4104 goto op_semantics_24;
4110 switch (op[1] & 0x00)
4113 goto op_semantics_24;
4119 switch (op[1] & 0x00)
4122 goto op_semantics_24;
4128 switch (op[1] & 0x00)
4131 goto op_semantics_24;
4137 switch (op[1] & 0x00)
4140 goto op_semantics_24;
4146 switch (op[1] & 0x00)
4149 goto op_semantics_24;
4155 switch (op[1] & 0x00)
4158 goto op_semantics_24;
4164 switch (op[1] & 0x00)
4167 goto op_semantics_24;
4173 switch (op[1] & 0x00)
4176 goto op_semantics_24;
4182 switch (op[1] & 0x00)
4185 goto op_semantics_24;
4191 switch (op[1] & 0x00)
4194 goto op_semantics_24;
4200 switch (op[1] & 0x00)
4203 goto op_semantics_24;
4209 switch (op[1] & 0x00)
4212 goto op_semantics_24;
4218 switch (op[1] & 0x00)
4221 goto op_semantics_24;
4227 switch (op[1] & 0x00)
4230 goto op_semantics_24;
4236 switch (op[1] & 0x00)
4239 goto op_semantics_24;
4245 switch (op[1] & 0x00)
4248 goto op_semantics_24;
4254 switch (op[1] & 0x00)
4257 goto op_semantics_24;
4263 switch (op[1] & 0x00)
4266 goto op_semantics_24;
4272 switch (op[1] & 0x00)
4275 goto op_semantics_24;
4281 switch (op[1] & 0x00)
4284 goto op_semantics_24;
4290 switch (op[1] & 0x00)
4293 goto op_semantics_24;
4299 switch (op[1] & 0x00)
4302 goto op_semantics_24;
4308 switch (op[1] & 0x00)
4311 goto op_semantics_24;
4317 switch (op[1] & 0x00)
4320 goto op_semantics_24;
4326 switch (op[1] & 0x00)
4329 goto op_semantics_24;
4335 switch (op[1] & 0x00)
4338 goto op_semantics_24;
4343 #line 589 "msp430-decode.opc"
4345 return msp430->n_bytes;