1 #line 1 "msp430-decode.opc"
3 /* Copyright (C) 2013-2014 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);
251 /* This fetch *is* the *PC++ that the opcode encodes :-) */
252 x = IMMU(2) | (ext << 16);
271 encode_rep_zc (int srxt, int dsxt, LocalData *ld)
273 MSP430_Opcode_Decoded *msp430 = ld->msp430;
275 msp430->repeat_reg = srxt & 1;
276 msp430->repeats = dsxt;
277 msp430->zc = (srxt & 2) ? 1 : 0;
280 #define REPZC(s,d) encode_rep_zc (s, d, ld)
283 dopc_to_id (int dopc)
287 case 4: return MSO_mov;
288 case 5: return MSO_add;
289 case 6: return MSO_addc;
290 case 7: return MSO_subc;
291 case 8: return MSO_sub;
292 case 9: return MSO_cmp;
293 case 10: return MSO_dadd;
294 case 11: return MSO_bit;
295 case 12: return MSO_bic;
296 case 13: return MSO_bis;
297 case 14: return MSO_xor;
298 case 15: return MSO_and;
299 default: return MSO_unknown;
304 sopc_to_id (int sop, int c)
308 case 0: return MSO_rrc;
309 case 1: return MSO_swpb;
310 case 2: return MSO_rra;
311 case 3: return MSO_sxt;
312 case 4: return MSO_push;
313 case 5: return MSO_call;
314 case 6: return MSO_reti;
315 default: return MSO_unknown;
320 msp430_decode_opcode (unsigned long pc,
321 MSP430_Opcode_Decoded *msp430,
322 int (*getbyte)(void *),
325 LocalData lds, *ld = &lds;
326 unsigned char op_buf[20] = {0};
327 unsigned char *op = op_buf;
330 int srxt_bits, dsxt_bits;
333 lds.getbyte = getbyte;
339 memset (msp430, 0, sizeof (*msp430));
341 /* These are overridden by an extension word. */
349 /* 430X extention word. */
351 switch (op[0] & 0xff)
355 switch (op[1] & 0xf0)
360 /** 0000 srcr 0000 dstr MOVA @%1, %0 */
361 #line 438 "msp430-decode.opc"
362 int srcr AU = op[0] & 0x0f;
363 #line 438 "msp430-decode.opc"
364 int dstr AU = op[1] & 0x0f;
367 printf ("\033[33m%s\033[0m %02x %02x\n",
368 "/** 0000 srcr 0000 dstr MOVA @%1, %0 */",
370 printf (" srcr = 0x%x,", srcr);
371 printf (" dstr = 0x%x\n", dstr);
373 SYNTAX("MOVA @%1, %0");
374 #line 438 "msp430-decode.opc"
375 ID (MSO_mov); SM (srcr, 0); DR (dstr);
377 msp430->ofs_430x = 1;
384 /** 0000 srcr 0001 dstr MOVA @%1+, %0 */
385 #line 443 "msp430-decode.opc"
386 int srcr AU = op[0] & 0x0f;
387 #line 443 "msp430-decode.opc"
388 int dstr AU = op[1] & 0x0f;
391 printf ("\033[33m%s\033[0m %02x %02x\n",
392 "/** 0000 srcr 0001 dstr MOVA @%1+, %0 */",
394 printf (" srcr = 0x%x,", srcr);
395 printf (" dstr = 0x%x\n", dstr);
397 SYNTAX("MOVA @%1+, %0");
398 #line 443 "msp430-decode.opc"
399 ID (MSO_mov); SI (srcr); DR (dstr);
401 msp430->ofs_430x = 1;
408 /** 0000 srcr 0010 dstr MOVA &%1, %0 */
409 #line 448 "msp430-decode.opc"
410 int srcr AU = op[0] & 0x0f;
411 #line 448 "msp430-decode.opc"
412 int dstr AU = op[1] & 0x0f;
415 printf ("\033[33m%s\033[0m %02x %02x\n",
416 "/** 0000 srcr 0010 dstr MOVA &%1, %0 */",
418 printf (" srcr = 0x%x,", srcr);
419 printf (" dstr = 0x%x\n", dstr);
421 SYNTAX("MOVA &%1, %0");
422 #line 448 "msp430-decode.opc"
423 ID (MSO_mov); SA ((srcr << 16) + IMMU(2)); DR (dstr);
425 msp430->ofs_430x = 1;
432 /** 0000 srcr 0011 dstr MOVA %1, %0 */
433 #line 453 "msp430-decode.opc"
434 int srcr AU = op[0] & 0x0f;
435 #line 453 "msp430-decode.opc"
436 int dstr AU = op[1] & 0x0f;
439 printf ("\033[33m%s\033[0m %02x %02x\n",
440 "/** 0000 srcr 0011 dstr MOVA %1, %0 */",
442 printf (" srcr = 0x%x,", srcr);
443 printf (" dstr = 0x%x\n", dstr);
445 SYNTAX("MOVA %1, %0");
446 #line 453 "msp430-decode.opc"
447 ID (MSO_mov); SM (srcr, IMMS(2)); DR (dstr);
449 msp430->ofs_430x = 1;
457 /** 0000 bt00 010w dstr RRCM.A %c, %0 */
458 #line 520 "msp430-decode.opc"
459 int bt AU = (op[0] >> 2) & 0x03;
460 #line 520 "msp430-decode.opc"
461 int w AU = (op[1] >> 4) & 0x01;
462 #line 520 "msp430-decode.opc"
463 int dstr AU = op[1] & 0x0f;
466 printf ("\033[33m%s\033[0m %02x %02x\n",
467 "/** 0000 bt00 010w dstr RRCM.A %c, %0 */",
469 printf (" bt = 0x%x,", bt);
470 printf (" w = 0x%x,", w);
471 printf (" dstr = 0x%x\n", dstr);
473 SYNTAX("RRCM.A %c, %0");
474 #line 520 "msp430-decode.opc"
475 ID (MSO_rrc); DR (dstr); SR (dstr);
476 msp430->repeats = bt;
477 msp430->size = w ? 16 : 20;
478 msp430->ofs_430x = 1;
486 /** 0000 srcr 0110 dstr MOVA %1, &%0 */
487 #line 458 "msp430-decode.opc"
488 int srcr AU = op[0] & 0x0f;
489 #line 458 "msp430-decode.opc"
490 int dstr AU = op[1] & 0x0f;
493 printf ("\033[33m%s\033[0m %02x %02x\n",
494 "/** 0000 srcr 0110 dstr MOVA %1, &%0 */",
496 printf (" srcr = 0x%x,", srcr);
497 printf (" dstr = 0x%x\n", dstr);
499 SYNTAX("MOVA %1, &%0");
500 #line 458 "msp430-decode.opc"
501 ID (MSO_mov); SR (srcr); DA ((dstr << 16) + IMMU(2));
503 msp430->ofs_430x = 1;
510 /** 0000 srcr 0111 dstr MOVA %1, &%0 */
511 #line 463 "msp430-decode.opc"
512 int srcr AU = op[0] & 0x0f;
513 #line 463 "msp430-decode.opc"
514 int dstr AU = op[1] & 0x0f;
517 printf ("\033[33m%s\033[0m %02x %02x\n",
518 "/** 0000 srcr 0111 dstr MOVA %1, &%0 */",
520 printf (" srcr = 0x%x,", srcr);
521 printf (" dstr = 0x%x\n", dstr);
523 SYNTAX("MOVA %1, &%0");
524 #line 463 "msp430-decode.opc"
525 ID (MSO_mov); SR (srcr); DM (dstr, IMMS(2));
527 msp430->ofs_430x = 1;
534 /** 0000 srcr 1000 dstr MOVA %1, %0 */
535 #line 468 "msp430-decode.opc"
536 int srcr AU = op[0] & 0x0f;
537 #line 468 "msp430-decode.opc"
538 int dstr AU = op[1] & 0x0f;
541 printf ("\033[33m%s\033[0m %02x %02x\n",
542 "/** 0000 srcr 1000 dstr MOVA %1, %0 */",
544 printf (" srcr = 0x%x,", srcr);
545 printf (" dstr = 0x%x\n", dstr);
547 SYNTAX("MOVA %1, %0");
548 #line 468 "msp430-decode.opc"
549 ID (MSO_mov); SC ((srcr << 16) + IMMU(2)); DR (dstr);
551 msp430->ofs_430x = 1;
558 /** 0000 srcr 1001 dstr CMPA %1, %0 */
559 #line 473 "msp430-decode.opc"
560 int srcr AU = op[0] & 0x0f;
561 #line 473 "msp430-decode.opc"
562 int dstr AU = op[1] & 0x0f;
565 printf ("\033[33m%s\033[0m %02x %02x\n",
566 "/** 0000 srcr 1001 dstr CMPA %1, %0 */",
568 printf (" srcr = 0x%x,", srcr);
569 printf (" dstr = 0x%x\n", dstr);
571 SYNTAX("CMPA %1, %0");
572 #line 473 "msp430-decode.opc"
573 ID (MSO_cmp); SC ((srcr << 16) + IMMU(2)); DR (dstr);
575 msp430->ofs_430x = 1;
583 /** 0000 srcr 1010 dstr ADDA %1, %0 */
584 #line 479 "msp430-decode.opc"
585 int srcr AU = op[0] & 0x0f;
586 #line 479 "msp430-decode.opc"
587 int dstr AU = op[1] & 0x0f;
590 printf ("\033[33m%s\033[0m %02x %02x\n",
591 "/** 0000 srcr 1010 dstr ADDA %1, %0 */",
593 printf (" srcr = 0x%x,", srcr);
594 printf (" dstr = 0x%x\n", dstr);
596 SYNTAX("ADDA %1, %0");
597 #line 479 "msp430-decode.opc"
598 ID (MSO_add); SC ((srcr << 16) + IMMU(2)); DR (dstr);
600 msp430->ofs_430x = 1;
608 /** 0000 srcr 1011 dstr SUBA %1, %0 */
609 #line 485 "msp430-decode.opc"
610 int srcr AU = op[0] & 0x0f;
611 #line 485 "msp430-decode.opc"
612 int dstr AU = op[1] & 0x0f;
615 printf ("\033[33m%s\033[0m %02x %02x\n",
616 "/** 0000 srcr 1011 dstr SUBA %1, %0 */",
618 printf (" srcr = 0x%x,", srcr);
619 printf (" dstr = 0x%x\n", dstr);
621 SYNTAX("SUBA %1, %0");
622 #line 485 "msp430-decode.opc"
623 ID (MSO_sub); SC ((srcr << 16) + IMMU(2)); DR (dstr);
625 msp430->ofs_430x = 1;
633 /** 0000 srcr 1100 dstr MOVA %1, %0 */
634 #line 497 "msp430-decode.opc"
635 int srcr AU = op[0] & 0x0f;
636 #line 497 "msp430-decode.opc"
637 int dstr AU = op[1] & 0x0f;
640 printf ("\033[33m%s\033[0m %02x %02x\n",
641 "/** 0000 srcr 1100 dstr MOVA %1, %0 */",
643 printf (" srcr = 0x%x,", srcr);
644 printf (" dstr = 0x%x\n", dstr);
646 SYNTAX("MOVA %1, %0");
647 #line 497 "msp430-decode.opc"
648 ID (MSO_mov); SR (srcr); DR (dstr);
650 msp430->ofs_430x = 1;
657 /** 0000 srcr 1101 dstr CMPA %1, %0 */
658 #line 502 "msp430-decode.opc"
659 int srcr AU = op[0] & 0x0f;
660 #line 502 "msp430-decode.opc"
661 int dstr AU = op[1] & 0x0f;
664 printf ("\033[33m%s\033[0m %02x %02x\n",
665 "/** 0000 srcr 1101 dstr CMPA %1, %0 */",
667 printf (" srcr = 0x%x,", srcr);
668 printf (" dstr = 0x%x\n", dstr);
670 SYNTAX("CMPA %1, %0");
671 #line 502 "msp430-decode.opc"
672 ID (MSO_cmp); SR (srcr); DR (dstr);
674 msp430->ofs_430x = 1;
682 /** 0000 srcr 1110 dstr ADDA %1, %0 */
683 #line 508 "msp430-decode.opc"
684 int srcr AU = op[0] & 0x0f;
685 #line 508 "msp430-decode.opc"
686 int dstr AU = op[1] & 0x0f;
689 printf ("\033[33m%s\033[0m %02x %02x\n",
690 "/** 0000 srcr 1110 dstr ADDA %1, %0 */",
692 printf (" srcr = 0x%x,", srcr);
693 printf (" dstr = 0x%x\n", dstr);
695 SYNTAX("ADDA %1, %0");
696 #line 508 "msp430-decode.opc"
697 ID (MSO_add); SR (srcr); DR (dstr);
699 msp430->ofs_430x = 1;
707 /** 0000 srcr 1111 dstr SUBA %1, %0 */
708 #line 514 "msp430-decode.opc"
709 int srcr AU = op[0] & 0x0f;
710 #line 514 "msp430-decode.opc"
711 int dstr AU = op[1] & 0x0f;
714 printf ("\033[33m%s\033[0m %02x %02x\n",
715 "/** 0000 srcr 1111 dstr SUBA %1, %0 */",
717 printf (" srcr = 0x%x,", srcr);
718 printf (" dstr = 0x%x\n", dstr);
720 SYNTAX("SUBA %1, %0");
721 #line 514 "msp430-decode.opc"
722 ID (MSO_sub); SR (srcr); DR (dstr);
724 msp430->ofs_430x = 1;
733 switch (op[1] & 0xf0)
751 /** 0000 bt01 010w dstr RRAM.A %c, %0 */
752 #line 527 "msp430-decode.opc"
753 int bt AU = (op[0] >> 2) & 0x03;
754 #line 527 "msp430-decode.opc"
755 int w AU = (op[1] >> 4) & 0x01;
756 #line 527 "msp430-decode.opc"
757 int dstr AU = op[1] & 0x0f;
760 printf ("\033[33m%s\033[0m %02x %02x\n",
761 "/** 0000 bt01 010w dstr RRAM.A %c, %0 */",
763 printf (" bt = 0x%x,", bt);
764 printf (" w = 0x%x,", w);
765 printf (" dstr = 0x%x\n", dstr);
767 SYNTAX("RRAM.A %c, %0");
768 #line 527 "msp430-decode.opc"
769 ID (MSO_rra); DR (dstr); SR (dstr);
770 msp430->repeats = bt;
771 msp430->size = w ? 16 : 20;
772 msp430->ofs_430x = 1;
790 goto op_semantics_10;
793 goto op_semantics_11;
796 goto op_semantics_12;
799 goto op_semantics_13;
802 goto op_semantics_14;
805 goto op_semantics_15;
811 switch (op[1] & 0xf0)
829 /** 0000 bt10 010w dstr RLAM.A %c, %0 */
830 #line 534 "msp430-decode.opc"
831 int bt AU = (op[0] >> 2) & 0x03;
832 #line 534 "msp430-decode.opc"
833 int w AU = (op[1] >> 4) & 0x01;
834 #line 534 "msp430-decode.opc"
835 int dstr AU = op[1] & 0x0f;
838 printf ("\033[33m%s\033[0m %02x %02x\n",
839 "/** 0000 bt10 010w dstr RLAM.A %c, %0 */",
841 printf (" bt = 0x%x,", bt);
842 printf (" w = 0x%x,", w);
843 printf (" dstr = 0x%x\n", dstr);
845 SYNTAX("RLAM.A %c, %0");
846 #line 534 "msp430-decode.opc"
847 ID (MSO_add); DR (dstr); SR (dstr);
848 msp430->repeats = bt;
849 msp430->size = w ? 16 : 20;
850 msp430->ofs_430x = 1;
868 goto op_semantics_10;
871 goto op_semantics_11;
874 goto op_semantics_12;
877 goto op_semantics_13;
880 goto op_semantics_14;
883 goto op_semantics_15;
889 switch (op[1] & 0xf0)
907 /** 0000 bt11 010w dstr RRUM.A %c, %0 */
908 #line 541 "msp430-decode.opc"
909 int bt AU = (op[0] >> 2) & 0x03;
910 #line 541 "msp430-decode.opc"
911 int w AU = (op[1] >> 4) & 0x01;
912 #line 541 "msp430-decode.opc"
913 int dstr AU = op[1] & 0x0f;
916 printf ("\033[33m%s\033[0m %02x %02x\n",
917 "/** 0000 bt11 010w dstr RRUM.A %c, %0 */",
919 printf (" bt = 0x%x,", bt);
920 printf (" w = 0x%x,", w);
921 printf (" dstr = 0x%x\n", dstr);
923 SYNTAX("RRUM.A %c, %0");
924 #line 541 "msp430-decode.opc"
925 ID (MSO_rru); DR (dstr); SR (dstr);
926 msp430->repeats = bt;
927 msp430->size = w ? 16 : 20;
928 msp430->ofs_430x = 1;
946 goto op_semantics_10;
949 goto op_semantics_11;
952 goto op_semantics_12;
955 goto op_semantics_13;
958 goto op_semantics_14;
961 goto op_semantics_15;
967 switch (op[1] & 0xf0)
998 goto op_semantics_10;
1001 goto op_semantics_11;
1004 goto op_semantics_12;
1007 goto op_semantics_13;
1010 goto op_semantics_14;
1013 goto op_semantics_15;
1019 switch (op[1] & 0xf0)
1022 goto op_semantics_1;
1025 goto op_semantics_2;
1028 goto op_semantics_3;
1031 goto op_semantics_4;
1035 goto op_semantics_16;
1038 goto op_semantics_6;
1041 goto op_semantics_7;
1044 goto op_semantics_8;
1047 goto op_semantics_9;
1050 goto op_semantics_10;
1053 goto op_semantics_11;
1056 goto op_semantics_12;
1059 goto op_semantics_13;
1062 goto op_semantics_14;
1065 goto op_semantics_15;
1071 switch (op[1] & 0xf0)
1074 goto op_semantics_1;
1077 goto op_semantics_2;
1080 goto op_semantics_3;
1083 goto op_semantics_4;
1087 goto op_semantics_17;
1090 goto op_semantics_6;
1093 goto op_semantics_7;
1096 goto op_semantics_8;
1099 goto op_semantics_9;
1102 goto op_semantics_10;
1105 goto op_semantics_11;
1108 goto op_semantics_12;
1111 goto op_semantics_13;
1114 goto op_semantics_14;
1117 goto op_semantics_15;
1123 switch (op[1] & 0xf0)
1126 goto op_semantics_1;
1129 goto op_semantics_2;
1132 goto op_semantics_3;
1135 goto op_semantics_4;
1139 goto op_semantics_18;
1142 goto op_semantics_6;
1145 goto op_semantics_7;
1148 goto op_semantics_8;
1151 goto op_semantics_9;
1154 goto op_semantics_10;
1157 goto op_semantics_11;
1160 goto op_semantics_12;
1163 goto op_semantics_13;
1166 goto op_semantics_14;
1169 goto op_semantics_15;
1175 switch (op[1] & 0xf0)
1178 goto op_semantics_1;
1181 goto op_semantics_2;
1184 goto op_semantics_3;
1187 goto op_semantics_4;
1191 goto op_semantics_5;
1194 goto op_semantics_6;
1197 goto op_semantics_7;
1200 goto op_semantics_8;
1203 goto op_semantics_9;
1206 goto op_semantics_10;
1209 goto op_semantics_11;
1212 goto op_semantics_12;
1215 goto op_semantics_13;
1218 goto op_semantics_14;
1221 goto op_semantics_15;
1227 switch (op[1] & 0xf0)
1230 goto op_semantics_1;
1233 goto op_semantics_2;
1236 goto op_semantics_3;
1239 goto op_semantics_4;
1243 goto op_semantics_16;
1246 goto op_semantics_6;
1249 goto op_semantics_7;
1252 goto op_semantics_8;
1255 goto op_semantics_9;
1258 goto op_semantics_10;
1261 goto op_semantics_11;
1264 goto op_semantics_12;
1267 goto op_semantics_13;
1270 goto op_semantics_14;
1273 goto op_semantics_15;
1279 switch (op[1] & 0xf0)
1282 goto op_semantics_1;
1285 goto op_semantics_2;
1288 goto op_semantics_3;
1291 goto op_semantics_4;
1295 goto op_semantics_17;
1298 goto op_semantics_6;
1301 goto op_semantics_7;
1304 goto op_semantics_8;
1307 goto op_semantics_9;
1310 goto op_semantics_10;
1313 goto op_semantics_11;
1316 goto op_semantics_12;
1319 goto op_semantics_13;
1322 goto op_semantics_14;
1325 goto op_semantics_15;
1331 switch (op[1] & 0xf0)
1334 goto op_semantics_1;
1337 goto op_semantics_2;
1340 goto op_semantics_3;
1343 goto op_semantics_4;
1347 goto op_semantics_18;
1350 goto op_semantics_6;
1353 goto op_semantics_7;
1356 goto op_semantics_8;
1359 goto op_semantics_9;
1362 goto op_semantics_10;
1365 goto op_semantics_11;
1368 goto op_semantics_12;
1371 goto op_semantics_13;
1374 goto op_semantics_14;
1377 goto op_semantics_15;
1383 switch (op[1] & 0xf0)
1386 goto op_semantics_1;
1389 goto op_semantics_2;
1392 goto op_semantics_3;
1395 goto op_semantics_4;
1399 goto op_semantics_5;
1402 goto op_semantics_6;
1405 goto op_semantics_7;
1408 goto op_semantics_8;
1411 goto op_semantics_9;
1414 goto op_semantics_10;
1417 goto op_semantics_11;
1420 goto op_semantics_12;
1423 goto op_semantics_13;
1426 goto op_semantics_14;
1429 goto op_semantics_15;
1435 switch (op[1] & 0xf0)
1438 goto op_semantics_1;
1441 goto op_semantics_2;
1444 goto op_semantics_3;
1447 goto op_semantics_4;
1451 goto op_semantics_16;
1454 goto op_semantics_6;
1457 goto op_semantics_7;
1460 goto op_semantics_8;
1463 goto op_semantics_9;
1466 goto op_semantics_10;
1469 goto op_semantics_11;
1472 goto op_semantics_12;
1475 goto op_semantics_13;
1478 goto op_semantics_14;
1481 goto op_semantics_15;
1487 switch (op[1] & 0xf0)
1490 goto op_semantics_1;
1493 goto op_semantics_2;
1496 goto op_semantics_3;
1499 goto op_semantics_4;
1503 goto op_semantics_17;
1506 goto op_semantics_6;
1509 goto op_semantics_7;
1512 goto op_semantics_8;
1515 goto op_semantics_9;
1518 goto op_semantics_10;
1521 goto op_semantics_11;
1524 goto op_semantics_12;
1527 goto op_semantics_13;
1530 goto op_semantics_14;
1533 goto op_semantics_15;
1539 switch (op[1] & 0xf0)
1542 goto op_semantics_1;
1545 goto op_semantics_2;
1548 goto op_semantics_3;
1551 goto op_semantics_4;
1555 goto op_semantics_18;
1558 goto op_semantics_6;
1561 goto op_semantics_7;
1564 goto op_semantics_8;
1567 goto op_semantics_9;
1570 goto op_semantics_10;
1573 goto op_semantics_11;
1576 goto op_semantics_12;
1579 goto op_semantics_13;
1582 goto op_semantics_14;
1585 goto op_semantics_15;
1591 switch (op[1] & 0x00)
1596 /** 0001 00so c b ad dreg %S%b %1 */
1597 #line 394 "msp430-decode.opc"
1598 int so AU = op[0] & 0x03;
1599 #line 394 "msp430-decode.opc"
1600 int c AU = (op[1] >> 7) & 0x01;
1601 #line 394 "msp430-decode.opc"
1602 int b AU = (op[1] >> 6) & 0x01;
1603 #line 394 "msp430-decode.opc"
1604 int ad AU = (op[1] >> 4) & 0x03;
1605 #line 394 "msp430-decode.opc"
1606 int dreg AU = op[1] & 0x0f;
1609 printf ("\033[33m%s\033[0m %02x %02x\n",
1610 "/** 0001 00so c b ad dreg %S%b %1 */",
1612 printf (" so = 0x%x,", so);
1613 printf (" c = 0x%x,", c);
1614 printf (" b = 0x%x,", b);
1615 printf (" ad = 0x%x,", ad);
1616 printf (" dreg = 0x%x\n", dreg);
1619 #line 394 "msp430-decode.opc"
1621 ID (sopc_to_id (so,c)); ASX (dreg, ad, srxt_bits); ABW (al_bit, b);
1624 REPZC (srxt_bits, dsxt_bits);
1626 /* The helper functions encode for source, but it's
1627 both source and dest, with a few documented exceptions. */
1628 msp430->op[0] = msp430->op[1];
1630 /* RETI ignores the operand. */
1631 if (msp430->id == MSO_reti)
1632 msp430->syntax = "%S";
1636 case MSO_rrc: F_VNZC; break;
1637 case MSO_swpb: F_____; break;
1638 case MSO_rra: F_0NZC; break;
1639 case MSO_sxt: F_0NZC; break;
1640 case MSO_push: F_____; break;
1641 case MSO_call: F_____; break;
1642 case MSO_reti: F_VNZC; break;
1646 /* 20xx 0010 0000 ---- ----
1647 3cxx 0011 1100 ---- ----
1648 001j mp-- ---- ----. */
1655 switch (op[1] & 0x00)
1658 goto op_semantics_19;
1664 switch (op[1] & 0x00)
1667 goto op_semantics_19;
1673 switch (op[1] & 0xff)
1677 /** 0001 0011 0000 0000 RETI */
1680 printf ("\033[33m%s\033[0m %02x %02x\n",
1681 "/** 0001 0011 0000 0000 RETI */",
1685 #line 548 "msp430-decode.opc"
1688 msp430->ofs_430x = 1;
1835 goto op_semantics_19;
1902 /** 0001 0011 01as dstr CALLA %0 */
1903 #line 553 "msp430-decode.opc"
1904 int as AU = (op[1] >> 4) & 0x03;
1905 #line 553 "msp430-decode.opc"
1906 int dstr AU = op[1] & 0x0f;
1909 printf ("\033[33m%s\033[0m %02x %02x\n",
1910 "/** 0001 0011 01as dstr CALLA %0 */",
1912 printf (" as = 0x%x,", as);
1913 printf (" dstr = 0x%x\n", dstr);
1916 #line 553 "msp430-decode.opc"
1917 ID (MSO_call); AS (dstr, as);
1919 msp430->ofs_430x = 1;
1940 /** 0001 0011 1000 extb CALLA %0 */
1941 #line 558 "msp430-decode.opc"
1942 int extb AU = op[1] & 0x0f;
1945 printf ("\033[33m%s\033[0m %02x %02x\n",
1946 "/** 0001 0011 1000 extb CALLA %0 */",
1948 printf (" extb = 0x%x\n", extb);
1951 #line 558 "msp430-decode.opc"
1952 ID (MSO_call); SA (IMMU(2) | (extb << 16));
1954 msp430->ofs_430x = 1;
1975 /** 0001 0011 1001 extb CALLA %0 */
1976 #line 563 "msp430-decode.opc"
1977 int extb AU = op[1] & 0x0f;
1980 printf ("\033[33m%s\033[0m %02x %02x\n",
1981 "/** 0001 0011 1001 extb CALLA %0 */",
1983 printf (" extb = 0x%x\n", extb);
1986 #line 563 "msp430-decode.opc"
1987 raddr = IMMU(2) | (extb << 16);
1988 if (raddr & 0x80000)
1990 ID (MSO_call); SA (pc + raddr + msp430->n_bytes);
1992 msp430->ofs_430x = 1;
2013 /** 0001 0011 1011 extb CALLA %0 */
2014 #line 571 "msp430-decode.opc"
2015 int extb AU = op[1] & 0x0f;
2018 printf ("\033[33m%s\033[0m %02x %02x\n",
2019 "/** 0001 0011 1011 extb CALLA %0 */",
2021 printf (" extb = 0x%x\n", extb);
2024 #line 571 "msp430-decode.opc"
2025 ID (MSO_call); SC (IMMU(2) | (extb << 16));
2027 msp430->ofs_430x = 1;
2035 switch (op[1] & 0x00)
2040 /** 0001 010w bits srcr PUSHM.A %0 */
2041 #line 576 "msp430-decode.opc"
2042 int w AU = op[0] & 0x01;
2043 #line 576 "msp430-decode.opc"
2044 int bits AU = (op[1] >> 4) & 0x0f;
2045 #line 576 "msp430-decode.opc"
2046 int srcr AU = op[1] & 0x0f;
2049 printf ("\033[33m%s\033[0m %02x %02x\n",
2050 "/** 0001 010w bits srcr PUSHM.A %0 */",
2052 printf (" w = 0x%x,", w);
2053 printf (" bits = 0x%x,", bits);
2054 printf (" srcr = 0x%x\n", srcr);
2056 SYNTAX("PUSHM.A %0");
2057 #line 576 "msp430-decode.opc"
2058 ID (MSO_push); SR (srcr);
2059 msp430->size = w ? 16 : 20;
2060 msp430->repeats = bits;
2061 msp430->ofs_430x = 1;
2069 switch (op[1] & 0x00)
2072 goto op_semantics_20;
2078 switch (op[1] & 0x00)
2083 /** 0001 011w bits dstr POPM.A %0 */
2084 #line 582 "msp430-decode.opc"
2085 int w AU = op[0] & 0x01;
2086 #line 582 "msp430-decode.opc"
2087 int bits AU = (op[1] >> 4) & 0x0f;
2088 #line 582 "msp430-decode.opc"
2089 int dstr AU = op[1] & 0x0f;
2092 printf ("\033[33m%s\033[0m %02x %02x\n",
2093 "/** 0001 011w bits dstr POPM.A %0 */",
2095 printf (" w = 0x%x,", w);
2096 printf (" bits = 0x%x,", bits);
2097 printf (" dstr = 0x%x\n", dstr);
2099 SYNTAX("POPM.A %0");
2100 #line 582 "msp430-decode.opc"
2101 ID (MSO_pop); DR (dstr);
2102 msp430->size = w ? 16 : 20;
2103 msp430->repeats = bits;
2104 msp430->ofs_430x = 1;
2112 switch (op[1] & 0x00)
2115 goto op_semantics_21;
2121 switch (op[1] & 0x30)
2126 /** 0001 1srx t l 00 dsxt 430x */
2127 #line 350 "msp430-decode.opc"
2128 int srx AU = op[0] & 0x07;
2129 #line 350 "msp430-decode.opc"
2130 int t AU = (op[1] >> 7) & 0x01;
2131 #line 350 "msp430-decode.opc"
2132 int l AU = (op[1] >> 6) & 0x01;
2133 #line 350 "msp430-decode.opc"
2134 int dsxt AU = op[1] & 0x0f;
2137 printf ("\033[33m%s\033[0m %02x %02x\n",
2138 "/** 0001 1srx t l 00 dsxt 430x */",
2140 printf (" srx = 0x%x,", srx);
2141 printf (" t = 0x%x,", t);
2142 printf (" l = 0x%x,", l);
2143 printf (" dsxt = 0x%x\n", dsxt);
2146 #line 350 "msp430-decode.opc"
2149 srxt_bits = srx * 2 + t;
2151 op = op_buf + lds.op_ptr;
2152 msp430->ofs_430x = 1;
2153 goto post_extension_word;
2156 opcode:4 sreg:4 Ad:1 BW:1 As:2 Dreg:4
2159 opcode:9 BW:1 Ad:2 DSreg:4
2162 opcode:3 Cond:3 pcrel:10. */
2164 /* Double-Operand "opcode" fields. */
2168 default: UNSUPPORTED(); break;
2173 switch (op[1] & 0x30)
2176 goto op_semantics_22;
2178 default: UNSUPPORTED(); break;
2183 switch (op[1] & 0x30)
2186 goto op_semantics_22;
2188 default: UNSUPPORTED(); break;
2193 switch (op[1] & 0x30)
2196 goto op_semantics_22;
2198 default: UNSUPPORTED(); break;
2203 switch (op[1] & 0x30)
2206 goto op_semantics_22;
2208 default: UNSUPPORTED(); break;
2213 switch (op[1] & 0x30)
2216 goto op_semantics_22;
2218 default: UNSUPPORTED(); break;
2223 switch (op[1] & 0x30)
2226 goto op_semantics_22;
2228 default: UNSUPPORTED(); break;
2233 switch (op[1] & 0x30)
2236 goto op_semantics_22;
2238 default: UNSUPPORTED(); break;
2243 switch (op[1] & 0x00)
2248 /** 001jmp aa addrlsbs %J %1 */
2249 #line 424 "msp430-decode.opc"
2250 int jmp AU = (op[0] >> 2) & 0x07;
2251 #line 424 "msp430-decode.opc"
2252 int aa AU = op[0] & 0x03;
2253 #line 424 "msp430-decode.opc"
2254 int addrlsbs AU = op[1];
2257 printf ("\033[33m%s\033[0m %02x %02x\n",
2258 "/** 001jmp aa addrlsbs %J %1 */",
2260 printf (" jmp = 0x%x,", jmp);
2261 printf (" aa = 0x%x,", aa);
2262 printf (" addrlsbs = 0x%x\n", addrlsbs);
2265 #line 424 "msp430-decode.opc"
2267 raddr = (aa << 9) | (addrlsbs << 1);
2269 raddr = raddr - 0x800;
2270 /* This is a pc-relative jump, but we don't use SM because that
2271 would load the target address from the memory at X(PC), not use
2272 PC+X *as* the address. So we use SC to use the address, not the
2273 data at that address. */
2274 ID (MSO_jmp); SC (pc + raddr + msp430->n_bytes);
2277 /* Extended instructions. */
2285 switch (op[1] & 0x00)
2288 goto op_semantics_23;
2294 switch (op[1] & 0x00)
2297 goto op_semantics_23;
2303 switch (op[1] & 0x00)
2306 goto op_semantics_23;
2312 switch (op[1] & 0x00)
2315 goto op_semantics_23;
2321 switch (op[1] & 0x00)
2324 goto op_semantics_23;
2330 switch (op[1] & 0x00)
2333 goto op_semantics_23;
2339 switch (op[1] & 0x00)
2342 goto op_semantics_23;
2348 switch (op[1] & 0x00)
2351 goto op_semantics_23;
2357 switch (op[1] & 0x00)
2360 goto op_semantics_23;
2366 switch (op[1] & 0x00)
2369 goto op_semantics_23;
2375 switch (op[1] & 0x00)
2378 goto op_semantics_23;
2384 switch (op[1] & 0x00)
2387 goto op_semantics_23;
2393 switch (op[1] & 0x00)
2396 goto op_semantics_23;
2402 switch (op[1] & 0x00)
2405 goto op_semantics_23;
2411 switch (op[1] & 0x00)
2414 goto op_semantics_23;
2420 switch (op[1] & 0x00)
2423 goto op_semantics_23;
2429 switch (op[1] & 0x00)
2432 goto op_semantics_23;
2438 switch (op[1] & 0x00)
2441 goto op_semantics_23;
2447 switch (op[1] & 0x00)
2450 goto op_semantics_23;
2456 switch (op[1] & 0x00)
2459 goto op_semantics_23;
2465 switch (op[1] & 0x00)
2468 goto op_semantics_23;
2474 switch (op[1] & 0x00)
2477 goto op_semantics_23;
2483 switch (op[1] & 0x00)
2486 goto op_semantics_23;
2492 switch (op[1] & 0x00)
2495 goto op_semantics_23;
2501 switch (op[1] & 0x00)
2504 goto op_semantics_23;
2510 switch (op[1] & 0x00)
2513 goto op_semantics_23;
2519 switch (op[1] & 0x00)
2522 goto op_semantics_23;
2528 switch (op[1] & 0x00)
2531 goto op_semantics_23;
2537 switch (op[1] & 0x00)
2540 goto op_semantics_23;
2546 switch (op[1] & 0x00)
2549 goto op_semantics_23;
2555 switch (op[1] & 0x00)
2558 goto op_semantics_23;
2564 switch (op[1] & 0x00)
2569 /** dopc sreg a b as dreg %D%b %1,%0 */
2570 #line 371 "msp430-decode.opc"
2571 int dopc AU = (op[0] >> 4) & 0x0f;
2572 #line 371 "msp430-decode.opc"
2573 int sreg AU = op[0] & 0x0f;
2574 #line 371 "msp430-decode.opc"
2575 int a AU = (op[1] >> 7) & 0x01;
2576 #line 371 "msp430-decode.opc"
2577 int b AU = (op[1] >> 6) & 0x01;
2578 #line 371 "msp430-decode.opc"
2579 int as AU = (op[1] >> 4) & 0x03;
2580 #line 371 "msp430-decode.opc"
2581 int dreg AU = op[1] & 0x0f;
2584 printf ("\033[33m%s\033[0m %02x %02x\n",
2585 "/** dopc sreg a b as dreg %D%b %1,%0 */",
2587 printf (" dopc = 0x%x,", dopc);
2588 printf (" sreg = 0x%x,", sreg);
2589 printf (" a = 0x%x,", a);
2590 printf (" b = 0x%x,", b);
2591 printf (" as = 0x%x,", as);
2592 printf (" dreg = 0x%x\n", dreg);
2594 SYNTAX("%D%b %1,%0");
2595 #line 371 "msp430-decode.opc"
2597 ID (dopc_to_id (dopc)); ASX (sreg, as, srxt_bits); ADX (dreg, a, dsxt_bits); ABW (al_bit, b);
2598 if (a == 0 && as == 0)
2599 REPZC (srxt_bits, dsxt_bits);
2603 case MSO_mov: F_____; break;
2604 case MSO_add: F_VNZC; break;
2605 case MSO_addc: F_VNZC; break;
2606 case MSO_subc: F_VNZC; break;
2607 case MSO_sub: F_VNZC; break;
2608 case MSO_cmp: F_VNZC; break;
2609 case MSO_dadd: F_VNZC; break;
2610 case MSO_bit: F_0NZC; break;
2611 case MSO_bic: F_____; break;
2612 case MSO_bis: F_____; break;
2613 case MSO_xor: F_VNZC; break;
2614 case MSO_and: F_0NZC; break;
2624 switch (op[1] & 0x00)
2627 goto op_semantics_24;
2633 switch (op[1] & 0x00)
2636 goto op_semantics_24;
2642 switch (op[1] & 0x00)
2645 goto op_semantics_24;
2651 switch (op[1] & 0x00)
2654 goto op_semantics_24;
2660 switch (op[1] & 0x00)
2663 goto op_semantics_24;
2669 switch (op[1] & 0x00)
2672 goto op_semantics_24;
2678 switch (op[1] & 0x00)
2681 goto op_semantics_24;
2687 switch (op[1] & 0x00)
2690 goto op_semantics_24;
2696 switch (op[1] & 0x00)
2699 goto op_semantics_24;
2705 switch (op[1] & 0x00)
2708 goto op_semantics_24;
2714 switch (op[1] & 0x00)
2717 goto op_semantics_24;
2723 switch (op[1] & 0x00)
2726 goto op_semantics_24;
2732 switch (op[1] & 0x00)
2735 goto op_semantics_24;
2741 switch (op[1] & 0x00)
2744 goto op_semantics_24;
2750 switch (op[1] & 0x00)
2753 goto op_semantics_24;
2759 switch (op[1] & 0x00)
2762 goto op_semantics_24;
2768 switch (op[1] & 0x00)
2771 goto op_semantics_24;
2777 switch (op[1] & 0x00)
2780 goto op_semantics_24;
2786 switch (op[1] & 0x00)
2789 goto op_semantics_24;
2795 switch (op[1] & 0x00)
2798 goto op_semantics_24;
2804 switch (op[1] & 0x00)
2807 goto op_semantics_24;
2813 switch (op[1] & 0x00)
2816 goto op_semantics_24;
2822 switch (op[1] & 0x00)
2825 goto op_semantics_24;
2831 switch (op[1] & 0x00)
2834 goto op_semantics_24;
2840 switch (op[1] & 0x00)
2843 goto op_semantics_24;
2849 switch (op[1] & 0x00)
2852 goto op_semantics_24;
2858 switch (op[1] & 0x00)
2861 goto op_semantics_24;
2867 switch (op[1] & 0x00)
2870 goto op_semantics_24;
2876 switch (op[1] & 0x00)
2879 goto op_semantics_24;
2885 switch (op[1] & 0x00)
2888 goto op_semantics_24;
2894 switch (op[1] & 0x00)
2897 goto op_semantics_24;
2903 switch (op[1] & 0x00)
2906 goto op_semantics_24;
2912 switch (op[1] & 0x00)
2915 goto op_semantics_24;
2921 switch (op[1] & 0x00)
2924 goto op_semantics_24;
2930 switch (op[1] & 0x00)
2933 goto op_semantics_24;
2939 switch (op[1] & 0x00)
2942 goto op_semantics_24;
2948 switch (op[1] & 0x00)
2951 goto op_semantics_24;
2957 switch (op[1] & 0x00)
2960 goto op_semantics_24;
2966 switch (op[1] & 0x00)
2969 goto op_semantics_24;
2975 switch (op[1] & 0x00)
2978 goto op_semantics_24;
2984 switch (op[1] & 0x00)
2987 goto op_semantics_24;
2993 switch (op[1] & 0x00)
2996 goto op_semantics_24;
3002 switch (op[1] & 0x00)
3005 goto op_semantics_24;
3011 switch (op[1] & 0x00)
3014 goto op_semantics_24;
3020 switch (op[1] & 0x00)
3023 goto op_semantics_24;
3029 switch (op[1] & 0x00)
3032 goto op_semantics_24;
3038 switch (op[1] & 0x00)
3041 goto op_semantics_24;
3047 switch (op[1] & 0x00)
3050 goto op_semantics_24;
3056 switch (op[1] & 0x00)
3059 goto op_semantics_24;
3065 switch (op[1] & 0x00)
3068 goto op_semantics_24;
3074 switch (op[1] & 0x00)
3077 goto op_semantics_24;
3083 switch (op[1] & 0x00)
3086 goto op_semantics_24;
3092 switch (op[1] & 0x00)
3095 goto op_semantics_24;
3101 switch (op[1] & 0x00)
3104 goto op_semantics_24;
3110 switch (op[1] & 0x00)
3113 goto op_semantics_24;
3119 switch (op[1] & 0x00)
3122 goto op_semantics_24;
3128 switch (op[1] & 0x00)
3131 goto op_semantics_24;
3137 switch (op[1] & 0x00)
3140 goto op_semantics_24;
3146 switch (op[1] & 0x00)
3149 goto op_semantics_24;
3155 switch (op[1] & 0x00)
3158 goto op_semantics_24;
3164 switch (op[1] & 0x00)
3167 goto op_semantics_24;
3173 switch (op[1] & 0x00)
3176 goto op_semantics_24;
3182 switch (op[1] & 0x00)
3185 goto op_semantics_24;
3191 switch (op[1] & 0x00)
3194 goto op_semantics_24;
3200 switch (op[1] & 0x00)
3203 goto op_semantics_24;
3209 switch (op[1] & 0x00)
3212 goto op_semantics_24;
3218 switch (op[1] & 0x00)
3221 goto op_semantics_24;
3227 switch (op[1] & 0x00)
3230 goto op_semantics_24;
3236 switch (op[1] & 0x00)
3239 goto op_semantics_24;
3245 switch (op[1] & 0x00)
3248 goto op_semantics_24;
3254 switch (op[1] & 0x00)
3257 goto op_semantics_24;
3263 switch (op[1] & 0x00)
3266 goto op_semantics_24;
3272 switch (op[1] & 0x00)
3275 goto op_semantics_24;
3281 switch (op[1] & 0x00)
3284 goto op_semantics_24;
3290 switch (op[1] & 0x00)
3293 goto op_semantics_24;
3299 switch (op[1] & 0x00)
3302 goto op_semantics_24;
3308 switch (op[1] & 0x00)
3311 goto op_semantics_24;
3317 switch (op[1] & 0x00)
3320 goto op_semantics_24;
3326 switch (op[1] & 0x00)
3329 goto op_semantics_24;
3335 switch (op[1] & 0x00)
3338 goto op_semantics_24;
3344 switch (op[1] & 0x00)
3347 goto op_semantics_24;
3353 switch (op[1] & 0x00)
3356 goto op_semantics_24;
3362 switch (op[1] & 0x00)
3365 goto op_semantics_24;
3371 switch (op[1] & 0x00)
3374 goto op_semantics_24;
3380 switch (op[1] & 0x00)
3383 goto op_semantics_24;
3389 switch (op[1] & 0x00)
3392 goto op_semantics_24;
3398 switch (op[1] & 0x00)
3401 goto op_semantics_24;
3407 switch (op[1] & 0x00)
3410 goto op_semantics_24;
3416 switch (op[1] & 0x00)
3419 goto op_semantics_24;
3425 switch (op[1] & 0x00)
3428 goto op_semantics_24;
3434 switch (op[1] & 0x00)
3437 goto op_semantics_24;
3443 switch (op[1] & 0x00)
3446 goto op_semantics_24;
3452 switch (op[1] & 0x00)
3455 goto op_semantics_24;
3461 switch (op[1] & 0x00)
3464 goto op_semantics_24;
3470 switch (op[1] & 0x00)
3473 goto op_semantics_24;
3479 switch (op[1] & 0x00)
3482 goto op_semantics_24;
3488 switch (op[1] & 0x00)
3491 goto op_semantics_24;
3497 switch (op[1] & 0x00)
3500 goto op_semantics_24;
3506 switch (op[1] & 0x00)
3509 goto op_semantics_24;
3515 switch (op[1] & 0x00)
3518 goto op_semantics_24;
3524 switch (op[1] & 0x00)
3527 goto op_semantics_24;
3533 switch (op[1] & 0x00)
3536 goto op_semantics_24;
3542 switch (op[1] & 0x00)
3545 goto op_semantics_24;
3551 switch (op[1] & 0x00)
3554 goto op_semantics_24;
3560 switch (op[1] & 0x00)
3563 goto op_semantics_24;
3569 switch (op[1] & 0x00)
3572 goto op_semantics_24;
3578 switch (op[1] & 0x00)
3581 goto op_semantics_24;
3587 switch (op[1] & 0x00)
3590 goto op_semantics_24;
3596 switch (op[1] & 0x00)
3599 goto op_semantics_24;
3605 switch (op[1] & 0x00)
3608 goto op_semantics_24;
3614 switch (op[1] & 0x00)
3617 goto op_semantics_24;
3623 switch (op[1] & 0x00)
3626 goto op_semantics_24;
3632 switch (op[1] & 0x00)
3635 goto op_semantics_24;
3641 switch (op[1] & 0x00)
3644 goto op_semantics_24;
3650 switch (op[1] & 0x00)
3653 goto op_semantics_24;
3659 switch (op[1] & 0x00)
3662 goto op_semantics_24;
3668 switch (op[1] & 0x00)
3671 goto op_semantics_24;
3677 switch (op[1] & 0x00)
3680 goto op_semantics_24;
3686 switch (op[1] & 0x00)
3689 goto op_semantics_24;
3695 switch (op[1] & 0x00)
3698 goto op_semantics_24;
3704 switch (op[1] & 0x00)
3707 goto op_semantics_24;
3713 switch (op[1] & 0x00)
3716 goto op_semantics_24;
3722 switch (op[1] & 0x00)
3725 goto op_semantics_24;
3731 switch (op[1] & 0x00)
3734 goto op_semantics_24;
3740 switch (op[1] & 0x00)
3743 goto op_semantics_24;
3749 switch (op[1] & 0x00)
3752 goto op_semantics_24;
3758 switch (op[1] & 0x00)
3761 goto op_semantics_24;
3767 switch (op[1] & 0x00)
3770 goto op_semantics_24;
3776 switch (op[1] & 0x00)
3779 goto op_semantics_24;
3785 switch (op[1] & 0x00)
3788 goto op_semantics_24;
3794 switch (op[1] & 0x00)
3797 goto op_semantics_24;
3803 switch (op[1] & 0x00)
3806 goto op_semantics_24;
3812 switch (op[1] & 0x00)
3815 goto op_semantics_24;
3821 switch (op[1] & 0x00)
3824 goto op_semantics_24;
3830 switch (op[1] & 0x00)
3833 goto op_semantics_24;
3839 switch (op[1] & 0x00)
3842 goto op_semantics_24;
3848 switch (op[1] & 0x00)
3851 goto op_semantics_24;
3857 switch (op[1] & 0x00)
3860 goto op_semantics_24;
3866 switch (op[1] & 0x00)
3869 goto op_semantics_24;
3875 switch (op[1] & 0x00)
3878 goto op_semantics_24;
3884 switch (op[1] & 0x00)
3887 goto op_semantics_24;
3893 switch (op[1] & 0x00)
3896 goto op_semantics_24;
3902 switch (op[1] & 0x00)
3905 goto op_semantics_24;
3911 switch (op[1] & 0x00)
3914 goto op_semantics_24;
3920 switch (op[1] & 0x00)
3923 goto op_semantics_24;
3929 switch (op[1] & 0x00)
3932 goto op_semantics_24;
3938 switch (op[1] & 0x00)
3941 goto op_semantics_24;
3947 switch (op[1] & 0x00)
3950 goto op_semantics_24;
3956 switch (op[1] & 0x00)
3959 goto op_semantics_24;
3965 switch (op[1] & 0x00)
3968 goto op_semantics_24;
3974 switch (op[1] & 0x00)
3977 goto op_semantics_24;
3983 switch (op[1] & 0x00)
3986 goto op_semantics_24;
3992 switch (op[1] & 0x00)
3995 goto op_semantics_24;
4001 switch (op[1] & 0x00)
4004 goto op_semantics_24;
4010 switch (op[1] & 0x00)
4013 goto op_semantics_24;
4019 switch (op[1] & 0x00)
4022 goto op_semantics_24;
4028 switch (op[1] & 0x00)
4031 goto op_semantics_24;
4037 switch (op[1] & 0x00)
4040 goto op_semantics_24;
4046 switch (op[1] & 0x00)
4049 goto op_semantics_24;
4055 switch (op[1] & 0x00)
4058 goto op_semantics_24;
4064 switch (op[1] & 0x00)
4067 goto op_semantics_24;
4073 switch (op[1] & 0x00)
4076 goto op_semantics_24;
4082 switch (op[1] & 0x00)
4085 goto op_semantics_24;
4091 switch (op[1] & 0x00)
4094 goto op_semantics_24;
4100 switch (op[1] & 0x00)
4103 goto op_semantics_24;
4109 switch (op[1] & 0x00)
4112 goto op_semantics_24;
4118 switch (op[1] & 0x00)
4121 goto op_semantics_24;
4127 switch (op[1] & 0x00)
4130 goto op_semantics_24;
4136 switch (op[1] & 0x00)
4139 goto op_semantics_24;
4145 switch (op[1] & 0x00)
4148 goto op_semantics_24;
4154 switch (op[1] & 0x00)
4157 goto op_semantics_24;
4163 switch (op[1] & 0x00)
4166 goto op_semantics_24;
4172 switch (op[1] & 0x00)
4175 goto op_semantics_24;
4181 switch (op[1] & 0x00)
4184 goto op_semantics_24;
4190 switch (op[1] & 0x00)
4193 goto op_semantics_24;
4199 switch (op[1] & 0x00)
4202 goto op_semantics_24;
4208 switch (op[1] & 0x00)
4211 goto op_semantics_24;
4217 switch (op[1] & 0x00)
4220 goto op_semantics_24;
4226 switch (op[1] & 0x00)
4229 goto op_semantics_24;
4235 switch (op[1] & 0x00)
4238 goto op_semantics_24;
4244 switch (op[1] & 0x00)
4247 goto op_semantics_24;
4253 switch (op[1] & 0x00)
4256 goto op_semantics_24;
4262 switch (op[1] & 0x00)
4265 goto op_semantics_24;
4271 switch (op[1] & 0x00)
4274 goto op_semantics_24;
4280 switch (op[1] & 0x00)
4283 goto op_semantics_24;
4289 switch (op[1] & 0x00)
4292 goto op_semantics_24;
4298 switch (op[1] & 0x00)
4301 goto op_semantics_24;
4307 switch (op[1] & 0x00)
4310 goto op_semantics_24;
4316 switch (op[1] & 0x00)
4319 goto op_semantics_24;
4325 switch (op[1] & 0x00)
4328 goto op_semantics_24;
4334 switch (op[1] & 0x00)
4337 goto op_semantics_24;
4342 #line 588 "msp430-decode.opc"
4344 return msp430->n_bytes;