1 #line 1 "msp430-decode.opc"
8 #include "opcode/msp430-decode.h"
14 MSP430_Opcode_Decoded * msp430;
15 int (* getbyte)(void *);
22 #define AU ATTRIBUTE_UNUSED
23 #define GETBYTE() getbyte_swapped (ld)
24 #define B ((unsigned long) GETBYTE ())
27 getbyte_swapped (LocalData *ld)
30 if (ld->op_ptr == ld->msp430->n_bytes)
33 b = ld->getbyte (ld->ptr);
34 /*fprintf(stderr, "[\033[32m%02x\033[0m]", b & 0xff);*/
35 ld->op [(ld->msp430->n_bytes++)^1] = b;
36 } while (ld->msp430->n_bytes & 1);
38 return ld->op[ld->op_ptr++];
41 #define ID(x) msp430->id = x
42 #define OP(n, t, r, a) (msp430->op[n].type = t, \
43 msp430->op[n].reg = r, \
44 msp430->op[n].addend = a)
45 #define OPX(n, t, r1, r2, a) \
46 (msp430->op[n].type = t, \
47 msp430->op[n].reg = r1, \
48 msp430->op[n].reg2 = r2, \
49 msp430->op[n].addend = a)
51 #define SYNTAX(x) msp430->syntax = x
52 #define UNSUPPORTED() \
53 msp430->syntax = "*unknown*"
55 #define DC(c) OP (0, MSP430_Operand_Immediate, 0, c)
56 #define DR(r) OP (0, MSP430_Operand_Register, r, 0)
57 #define DM(r, a) OP (0, MSP430_Operand_Indirect, r, a)
58 #define DA(a) OP (0, MSP430_Operand_Indirect, MSR_None, a)
59 #define AD(r, ad) encode_ad (r, ad, ld, 0)
60 #define ADX(r, ad, x) encode_ad (r, ad, ld, x)
62 #define SC(c) OP (1, MSP430_Operand_Immediate, 0, c)
63 #define SR(r) OP (1, MSP430_Operand_Register, r, 0)
64 #define SM(r, a) OP (1, MSP430_Operand_Indirect, r, a)
65 #define SA(a) OP (1, MSP430_Operand_Indirect, MSR_None, a)
66 #define SI(r) OP (1, MSP430_Operand_Indirect_Postinc, r, 0)
67 #define AS(r, as) encode_as (r, as, ld, 0)
68 #define ASX(r, as, x) encode_as (r, as, ld, x)
70 #define BW(x) msp430->size = (x ? 8 : 16)
71 /* The last 20 is for SWPBX.Z and SXTX.A */
72 #define ABW(a, x) msp430->size = (a ? ((x ? 8 : 16)) : (x ? 20 : 20))
74 #define IMMU(bytes) immediate (bytes, 0, ld)
75 #define IMMS(bytes) immediate (bytes, 1, ld)
77 /* Helper macros for known status bits settings */
78 #define F_____ msp430->flags_1 = msp430->flags_0 = 0; msp430->flags_set = 0
79 #define F_VNZC msp430->flags_1 = msp430->flags_0 = 0; msp430->flags_set = 0x87
80 #define F_0NZC msp430->flags_1 = 0; msp430->flags_0 = 0x80; msp430->flags_set = 0x07
83 /* The chip is little-endian, but GETBYTE byte-swaps words because the
84 decoder is based on 16-bit "words" so *this* logic is big-endian. */
86 immediate (int bytes, int sign_extend, LocalData * ld)
94 if (sign_extend && (i & 0x80))
100 if (sign_extend && (i & 0x8000))
107 if (sign_extend && (i & 0x800000))
115 if (sign_extend && (i & 0x80000000ULL))
119 fprintf (stderr, "Programmer error: immediate() called with invalid byte count %d\n", bytes);
122 /*fprintf(stderr, "\033[35mIMM(%d,%d,%#lx)\033[0m", bytes, sign_extend, i);*/
130 01 X(Rn) Sym - X(abs) #1
132 11 (Rn++) #imm - #8 #-1
136 1 X(Rn) Sym - X(abs) -
140 encode_ad (int reg, int ad, LocalData *ld, int ext)
142 MSP430_Opcode_Decoded * msp430 = ld->msp430;
144 /*fprintf(stderr, "[\033[31mAD %d R%d\033[0m]", ad, reg);*/
147 int x = IMMU(2) | (ext << 16);
150 case 0: /* (PC) -> Symbolic */
151 DA (x + ld->pc + ld->op_ptr - 2);
153 case 2: /* (SR) -> Absolute */
168 encode_as (int reg, int as, LocalData *ld, int ext)
170 MSP430_Opcode_Decoded * msp430 = ld->msp430;
173 /*fprintf(stderr, "[\033[31mAS %d R%d\033[0m]", as, reg);*/
190 case 0: /* PC -> Symbolic */
191 x = IMMU(2) | (ext << 16);
192 SA (x + ld->pc + ld->op_ptr - 2);
194 case 2: /* SR -> Absolute */
195 x = IMMU(2) | (ext << 16);
202 x = IMMU(2) | (ext << 16);
228 /* This fetch *is* the *PC++ that the opcode encodes :-) */
229 x = IMMU(2) | (ext << 16);
248 encode_rep_zc (int srxt, int dsxt, LocalData *ld)
250 MSP430_Opcode_Decoded * msp430 = ld->msp430;
252 msp430->repeat_reg = srxt & 1;
253 msp430->repeats = dsxt;
254 msp430->zc = (srxt & 2) ? 1 : 0;
257 #define REPZC(s,d) encode_rep_zc (s, d, ld)
260 dopc_to_id (int dopc)
264 case 4: return MSO_mov;
265 case 5: return MSO_add;
266 case 6: return MSO_addc;
267 case 7: return MSO_subc;
268 case 8: return MSO_sub;
269 case 9: return MSO_cmp;
270 case 10: return MSO_dadd;
271 case 11: return MSO_bit;
272 case 12: return MSO_bic;
273 case 13: return MSO_bis;
274 case 14: return MSO_xor;
275 case 15: return MSO_and;
282 sopc_to_id (int sop,int c)
286 case 0: return MSO_rrc;
287 case 1: return MSO_swpb;
288 case 2: return MSO_rra;
289 case 3: return MSO_sxt;
290 case 4: return MSO_push;
291 case 5: return MSO_call;
292 case 6: return MSO_reti;
299 msp430_decode_opcode (unsigned long pc,
300 MSP430_Opcode_Decoded * msp430,
301 int (* getbyte)(void *),
304 LocalData lds, * ld = &lds;
305 unsigned char op_buf[20] = {0};
306 unsigned char *op = op_buf;
309 int srxt_bits, dsxt_bits;
312 lds.getbyte = getbyte;
318 memset (msp430, 0, sizeof (*msp430));
320 /* These are overridden by an extension word. */
328 /* 430X extention word. */
330 switch (op[0] & 0xff)
334 switch (op[1] & 0xf0)
339 /** 0000 srcr 0000 dstr MOVA @%1, %0 */
340 #line 419 "msp430-decode.opc"
341 int srcr AU = op[0] & 0x0f;
342 #line 419 "msp430-decode.opc"
343 int dstr AU = op[1] & 0x0f;
346 printf ("\033[33m%s\033[0m %02x %02x\n",
347 "/** 0000 srcr 0000 dstr MOVA @%1, %0 */",
349 printf (" srcr = 0x%x,", srcr);
350 printf (" dstr = 0x%x\n", dstr);
352 SYNTAX("MOVA @%1, %0");
353 #line 419 "msp430-decode.opc"
354 ID (MSO_mov); SM (srcr, 0); DR (dstr);
356 msp430->ofs_430x = 1;
363 /** 0000 srcr 0001 dstr MOVA @%1+, %0 */
364 #line 424 "msp430-decode.opc"
365 int srcr AU = op[0] & 0x0f;
366 #line 424 "msp430-decode.opc"
367 int dstr AU = op[1] & 0x0f;
370 printf ("\033[33m%s\033[0m %02x %02x\n",
371 "/** 0000 srcr 0001 dstr MOVA @%1+, %0 */",
373 printf (" srcr = 0x%x,", srcr);
374 printf (" dstr = 0x%x\n", dstr);
376 SYNTAX("MOVA @%1+, %0");
377 #line 424 "msp430-decode.opc"
378 ID (MSO_mov); SI (srcr); DR (dstr);
380 msp430->ofs_430x = 1;
387 /** 0000 srcr 0010 dstr MOVA &%1, %0 */
388 #line 429 "msp430-decode.opc"
389 int srcr AU = op[0] & 0x0f;
390 #line 429 "msp430-decode.opc"
391 int dstr AU = op[1] & 0x0f;
394 printf ("\033[33m%s\033[0m %02x %02x\n",
395 "/** 0000 srcr 0010 dstr MOVA &%1, %0 */",
397 printf (" srcr = 0x%x,", srcr);
398 printf (" dstr = 0x%x\n", dstr);
400 SYNTAX("MOVA &%1, %0");
401 #line 429 "msp430-decode.opc"
402 ID (MSO_mov); SA ((srcr << 16) + IMMU(2)); DR (dstr);
404 msp430->ofs_430x = 1;
411 /** 0000 srcr 0011 dstr MOVA %1, %0 */
412 #line 434 "msp430-decode.opc"
413 int srcr AU = op[0] & 0x0f;
414 #line 434 "msp430-decode.opc"
415 int dstr AU = op[1] & 0x0f;
418 printf ("\033[33m%s\033[0m %02x %02x\n",
419 "/** 0000 srcr 0011 dstr MOVA %1, %0 */",
421 printf (" srcr = 0x%x,", srcr);
422 printf (" dstr = 0x%x\n", dstr);
424 SYNTAX("MOVA %1, %0");
425 #line 434 "msp430-decode.opc"
426 ID (MSO_mov); SM (srcr, IMMS(2)); DR (dstr);
428 msp430->ofs_430x = 1;
436 /** 0000 bt00 010w dstr RRCM.A %c, %0 */
437 #line 501 "msp430-decode.opc"
438 int bt AU = (op[0] >> 2) & 0x03;
439 #line 501 "msp430-decode.opc"
440 int w AU = (op[1] >> 4) & 0x01;
441 #line 501 "msp430-decode.opc"
442 int dstr AU = op[1] & 0x0f;
445 printf ("\033[33m%s\033[0m %02x %02x\n",
446 "/** 0000 bt00 010w dstr RRCM.A %c, %0 */",
448 printf (" bt = 0x%x,", bt);
449 printf (" w = 0x%x,", w);
450 printf (" dstr = 0x%x\n", dstr);
452 SYNTAX("RRCM.A %c, %0");
453 #line 501 "msp430-decode.opc"
454 ID (MSO_rrc); DR (dstr); SR (dstr);
455 msp430->repeats = bt;
456 msp430->size = w ? 16 : 20;
457 msp430->ofs_430x = 1;
465 /** 0000 srcr 0110 dstr MOVA %1, &%0 */
466 #line 439 "msp430-decode.opc"
467 int srcr AU = op[0] & 0x0f;
468 #line 439 "msp430-decode.opc"
469 int dstr AU = op[1] & 0x0f;
472 printf ("\033[33m%s\033[0m %02x %02x\n",
473 "/** 0000 srcr 0110 dstr MOVA %1, &%0 */",
475 printf (" srcr = 0x%x,", srcr);
476 printf (" dstr = 0x%x\n", dstr);
478 SYNTAX("MOVA %1, &%0");
479 #line 439 "msp430-decode.opc"
480 ID (MSO_mov); SR (srcr); DA ((dstr << 16) + IMMU(2));
482 msp430->ofs_430x = 1;
489 /** 0000 srcr 0111 dstr MOVA %1, &%0 */
490 #line 444 "msp430-decode.opc"
491 int srcr AU = op[0] & 0x0f;
492 #line 444 "msp430-decode.opc"
493 int dstr AU = op[1] & 0x0f;
496 printf ("\033[33m%s\033[0m %02x %02x\n",
497 "/** 0000 srcr 0111 dstr MOVA %1, &%0 */",
499 printf (" srcr = 0x%x,", srcr);
500 printf (" dstr = 0x%x\n", dstr);
502 SYNTAX("MOVA %1, &%0");
503 #line 444 "msp430-decode.opc"
504 ID (MSO_mov); SR (srcr); DM (dstr, IMMS(2));
506 msp430->ofs_430x = 1;
513 /** 0000 srcr 1000 dstr MOVA %1, %0 */
514 #line 449 "msp430-decode.opc"
515 int srcr AU = op[0] & 0x0f;
516 #line 449 "msp430-decode.opc"
517 int dstr AU = op[1] & 0x0f;
520 printf ("\033[33m%s\033[0m %02x %02x\n",
521 "/** 0000 srcr 1000 dstr MOVA %1, %0 */",
523 printf (" srcr = 0x%x,", srcr);
524 printf (" dstr = 0x%x\n", dstr);
526 SYNTAX("MOVA %1, %0");
527 #line 449 "msp430-decode.opc"
528 ID (MSO_mov); SC ((srcr << 16) + IMMU(2)); DR (dstr);
530 msp430->ofs_430x = 1;
537 /** 0000 srcr 1001 dstr CMPA %1, %0 */
538 #line 454 "msp430-decode.opc"
539 int srcr AU = op[0] & 0x0f;
540 #line 454 "msp430-decode.opc"
541 int dstr AU = op[1] & 0x0f;
544 printf ("\033[33m%s\033[0m %02x %02x\n",
545 "/** 0000 srcr 1001 dstr CMPA %1, %0 */",
547 printf (" srcr = 0x%x,", srcr);
548 printf (" dstr = 0x%x\n", dstr);
550 SYNTAX("CMPA %1, %0");
551 #line 454 "msp430-decode.opc"
552 ID (MSO_cmp); SC ((srcr << 16) + IMMU(2)); DR (dstr);
554 msp430->ofs_430x = 1;
562 /** 0000 srcr 1010 dstr ADDA %1, %0 */
563 #line 460 "msp430-decode.opc"
564 int srcr AU = op[0] & 0x0f;
565 #line 460 "msp430-decode.opc"
566 int dstr AU = op[1] & 0x0f;
569 printf ("\033[33m%s\033[0m %02x %02x\n",
570 "/** 0000 srcr 1010 dstr ADDA %1, %0 */",
572 printf (" srcr = 0x%x,", srcr);
573 printf (" dstr = 0x%x\n", dstr);
575 SYNTAX("ADDA %1, %0");
576 #line 460 "msp430-decode.opc"
577 ID (MSO_add); SC ((srcr << 16) + IMMU(2)); DR (dstr);
579 msp430->ofs_430x = 1;
587 /** 0000 srcr 1011 dstr SUBA %1, %0 */
588 #line 466 "msp430-decode.opc"
589 int srcr AU = op[0] & 0x0f;
590 #line 466 "msp430-decode.opc"
591 int dstr AU = op[1] & 0x0f;
594 printf ("\033[33m%s\033[0m %02x %02x\n",
595 "/** 0000 srcr 1011 dstr SUBA %1, %0 */",
597 printf (" srcr = 0x%x,", srcr);
598 printf (" dstr = 0x%x\n", dstr);
600 SYNTAX("SUBA %1, %0");
601 #line 466 "msp430-decode.opc"
602 ID (MSO_sub); SC ((srcr << 16) + IMMU(2)); DR (dstr);
604 msp430->ofs_430x = 1;
612 /** 0000 srcr 1100 dstr MOVA %1, %0 */
613 #line 478 "msp430-decode.opc"
614 int srcr AU = op[0] & 0x0f;
615 #line 478 "msp430-decode.opc"
616 int dstr AU = op[1] & 0x0f;
619 printf ("\033[33m%s\033[0m %02x %02x\n",
620 "/** 0000 srcr 1100 dstr MOVA %1, %0 */",
622 printf (" srcr = 0x%x,", srcr);
623 printf (" dstr = 0x%x\n", dstr);
625 SYNTAX("MOVA %1, %0");
626 #line 478 "msp430-decode.opc"
627 ID (MSO_mov); SR (srcr); DR (dstr);
629 msp430->ofs_430x = 1;
636 /** 0000 srcr 1101 dstr CMPA %1, %0 */
637 #line 483 "msp430-decode.opc"
638 int srcr AU = op[0] & 0x0f;
639 #line 483 "msp430-decode.opc"
640 int dstr AU = op[1] & 0x0f;
643 printf ("\033[33m%s\033[0m %02x %02x\n",
644 "/** 0000 srcr 1101 dstr CMPA %1, %0 */",
646 printf (" srcr = 0x%x,", srcr);
647 printf (" dstr = 0x%x\n", dstr);
649 SYNTAX("CMPA %1, %0");
650 #line 483 "msp430-decode.opc"
651 ID (MSO_cmp); SR (srcr); DR (dstr);
653 msp430->ofs_430x = 1;
661 /** 0000 srcr 1110 dstr ADDA %1, %0 */
662 #line 489 "msp430-decode.opc"
663 int srcr AU = op[0] & 0x0f;
664 #line 489 "msp430-decode.opc"
665 int dstr AU = op[1] & 0x0f;
668 printf ("\033[33m%s\033[0m %02x %02x\n",
669 "/** 0000 srcr 1110 dstr ADDA %1, %0 */",
671 printf (" srcr = 0x%x,", srcr);
672 printf (" dstr = 0x%x\n", dstr);
674 SYNTAX("ADDA %1, %0");
675 #line 489 "msp430-decode.opc"
676 ID (MSO_add); SR (srcr); DR (dstr);
678 msp430->ofs_430x = 1;
686 /** 0000 srcr 1111 dstr SUBA %1, %0 */
687 #line 495 "msp430-decode.opc"
688 int srcr AU = op[0] & 0x0f;
689 #line 495 "msp430-decode.opc"
690 int dstr AU = op[1] & 0x0f;
693 printf ("\033[33m%s\033[0m %02x %02x\n",
694 "/** 0000 srcr 1111 dstr SUBA %1, %0 */",
696 printf (" srcr = 0x%x,", srcr);
697 printf (" dstr = 0x%x\n", dstr);
699 SYNTAX("SUBA %1, %0");
700 #line 495 "msp430-decode.opc"
701 ID (MSO_sub); SR (srcr); DR (dstr);
703 msp430->ofs_430x = 1;
712 switch (op[1] & 0xf0)
730 /** 0000 bt01 010w dstr RRAM.A %c, %0 */
731 #line 508 "msp430-decode.opc"
732 int bt AU = (op[0] >> 2) & 0x03;
733 #line 508 "msp430-decode.opc"
734 int w AU = (op[1] >> 4) & 0x01;
735 #line 508 "msp430-decode.opc"
736 int dstr AU = op[1] & 0x0f;
739 printf ("\033[33m%s\033[0m %02x %02x\n",
740 "/** 0000 bt01 010w dstr RRAM.A %c, %0 */",
742 printf (" bt = 0x%x,", bt);
743 printf (" w = 0x%x,", w);
744 printf (" dstr = 0x%x\n", dstr);
746 SYNTAX("RRAM.A %c, %0");
747 #line 508 "msp430-decode.opc"
748 ID (MSO_rra); DR (dstr); SR (dstr);
749 msp430->repeats = bt;
750 msp430->size = w ? 16 : 20;
751 msp430->ofs_430x = 1;
769 goto op_semantics_10;
772 goto op_semantics_11;
775 goto op_semantics_12;
778 goto op_semantics_13;
781 goto op_semantics_14;
784 goto op_semantics_15;
790 switch (op[1] & 0xf0)
808 /** 0000 bt10 010w dstr RLAM.A %c, %0 */
809 #line 515 "msp430-decode.opc"
810 int bt AU = (op[0] >> 2) & 0x03;
811 #line 515 "msp430-decode.opc"
812 int w AU = (op[1] >> 4) & 0x01;
813 #line 515 "msp430-decode.opc"
814 int dstr AU = op[1] & 0x0f;
817 printf ("\033[33m%s\033[0m %02x %02x\n",
818 "/** 0000 bt10 010w dstr RLAM.A %c, %0 */",
820 printf (" bt = 0x%x,", bt);
821 printf (" w = 0x%x,", w);
822 printf (" dstr = 0x%x\n", dstr);
824 SYNTAX("RLAM.A %c, %0");
825 #line 515 "msp430-decode.opc"
826 ID (MSO_add); DR (dstr); SR (dstr);
827 msp430->repeats = bt;
828 msp430->size = w ? 16 : 20;
829 msp430->ofs_430x = 1;
847 goto op_semantics_10;
850 goto op_semantics_11;
853 goto op_semantics_12;
856 goto op_semantics_13;
859 goto op_semantics_14;
862 goto op_semantics_15;
868 switch (op[1] & 0xf0)
886 /** 0000 bt11 010w dstr RRUM.A %c, %0 */
887 #line 522 "msp430-decode.opc"
888 int bt AU = (op[0] >> 2) & 0x03;
889 #line 522 "msp430-decode.opc"
890 int w AU = (op[1] >> 4) & 0x01;
891 #line 522 "msp430-decode.opc"
892 int dstr AU = op[1] & 0x0f;
895 printf ("\033[33m%s\033[0m %02x %02x\n",
896 "/** 0000 bt11 010w dstr RRUM.A %c, %0 */",
898 printf (" bt = 0x%x,", bt);
899 printf (" w = 0x%x,", w);
900 printf (" dstr = 0x%x\n", dstr);
902 SYNTAX("RRUM.A %c, %0");
903 #line 522 "msp430-decode.opc"
904 ID (MSO_rru); DR (dstr); SR (dstr);
905 msp430->repeats = bt;
906 msp430->size = w ? 16 : 20;
907 msp430->ofs_430x = 1;
925 goto op_semantics_10;
928 goto op_semantics_11;
931 goto op_semantics_12;
934 goto op_semantics_13;
937 goto op_semantics_14;
940 goto op_semantics_15;
946 switch (op[1] & 0xf0)
977 goto op_semantics_10;
980 goto op_semantics_11;
983 goto op_semantics_12;
986 goto op_semantics_13;
989 goto op_semantics_14;
992 goto op_semantics_15;
998 switch (op[1] & 0xf0)
1001 goto op_semantics_1;
1004 goto op_semantics_2;
1007 goto op_semantics_3;
1010 goto op_semantics_4;
1014 goto op_semantics_16;
1017 goto op_semantics_6;
1020 goto op_semantics_7;
1023 goto op_semantics_8;
1026 goto op_semantics_9;
1029 goto op_semantics_10;
1032 goto op_semantics_11;
1035 goto op_semantics_12;
1038 goto op_semantics_13;
1041 goto op_semantics_14;
1044 goto op_semantics_15;
1050 switch (op[1] & 0xf0)
1053 goto op_semantics_1;
1056 goto op_semantics_2;
1059 goto op_semantics_3;
1062 goto op_semantics_4;
1066 goto op_semantics_17;
1069 goto op_semantics_6;
1072 goto op_semantics_7;
1075 goto op_semantics_8;
1078 goto op_semantics_9;
1081 goto op_semantics_10;
1084 goto op_semantics_11;
1087 goto op_semantics_12;
1090 goto op_semantics_13;
1093 goto op_semantics_14;
1096 goto op_semantics_15;
1102 switch (op[1] & 0xf0)
1105 goto op_semantics_1;
1108 goto op_semantics_2;
1111 goto op_semantics_3;
1114 goto op_semantics_4;
1118 goto op_semantics_18;
1121 goto op_semantics_6;
1124 goto op_semantics_7;
1127 goto op_semantics_8;
1130 goto op_semantics_9;
1133 goto op_semantics_10;
1136 goto op_semantics_11;
1139 goto op_semantics_12;
1142 goto op_semantics_13;
1145 goto op_semantics_14;
1148 goto op_semantics_15;
1154 switch (op[1] & 0xf0)
1157 goto op_semantics_1;
1160 goto op_semantics_2;
1163 goto op_semantics_3;
1166 goto op_semantics_4;
1170 goto op_semantics_5;
1173 goto op_semantics_6;
1176 goto op_semantics_7;
1179 goto op_semantics_8;
1182 goto op_semantics_9;
1185 goto op_semantics_10;
1188 goto op_semantics_11;
1191 goto op_semantics_12;
1194 goto op_semantics_13;
1197 goto op_semantics_14;
1200 goto op_semantics_15;
1206 switch (op[1] & 0xf0)
1209 goto op_semantics_1;
1212 goto op_semantics_2;
1215 goto op_semantics_3;
1218 goto op_semantics_4;
1222 goto op_semantics_16;
1225 goto op_semantics_6;
1228 goto op_semantics_7;
1231 goto op_semantics_8;
1234 goto op_semantics_9;
1237 goto op_semantics_10;
1240 goto op_semantics_11;
1243 goto op_semantics_12;
1246 goto op_semantics_13;
1249 goto op_semantics_14;
1252 goto op_semantics_15;
1258 switch (op[1] & 0xf0)
1261 goto op_semantics_1;
1264 goto op_semantics_2;
1267 goto op_semantics_3;
1270 goto op_semantics_4;
1274 goto op_semantics_17;
1277 goto op_semantics_6;
1280 goto op_semantics_7;
1283 goto op_semantics_8;
1286 goto op_semantics_9;
1289 goto op_semantics_10;
1292 goto op_semantics_11;
1295 goto op_semantics_12;
1298 goto op_semantics_13;
1301 goto op_semantics_14;
1304 goto op_semantics_15;
1310 switch (op[1] & 0xf0)
1313 goto op_semantics_1;
1316 goto op_semantics_2;
1319 goto op_semantics_3;
1322 goto op_semantics_4;
1326 goto op_semantics_18;
1329 goto op_semantics_6;
1332 goto op_semantics_7;
1335 goto op_semantics_8;
1338 goto op_semantics_9;
1341 goto op_semantics_10;
1344 goto op_semantics_11;
1347 goto op_semantics_12;
1350 goto op_semantics_13;
1353 goto op_semantics_14;
1356 goto op_semantics_15;
1362 switch (op[1] & 0xf0)
1365 goto op_semantics_1;
1368 goto op_semantics_2;
1371 goto op_semantics_3;
1374 goto op_semantics_4;
1378 goto op_semantics_5;
1381 goto op_semantics_6;
1384 goto op_semantics_7;
1387 goto op_semantics_8;
1390 goto op_semantics_9;
1393 goto op_semantics_10;
1396 goto op_semantics_11;
1399 goto op_semantics_12;
1402 goto op_semantics_13;
1405 goto op_semantics_14;
1408 goto op_semantics_15;
1414 switch (op[1] & 0xf0)
1417 goto op_semantics_1;
1420 goto op_semantics_2;
1423 goto op_semantics_3;
1426 goto op_semantics_4;
1430 goto op_semantics_16;
1433 goto op_semantics_6;
1436 goto op_semantics_7;
1439 goto op_semantics_8;
1442 goto op_semantics_9;
1445 goto op_semantics_10;
1448 goto op_semantics_11;
1451 goto op_semantics_12;
1454 goto op_semantics_13;
1457 goto op_semantics_14;
1460 goto op_semantics_15;
1466 switch (op[1] & 0xf0)
1469 goto op_semantics_1;
1472 goto op_semantics_2;
1475 goto op_semantics_3;
1478 goto op_semantics_4;
1482 goto op_semantics_17;
1485 goto op_semantics_6;
1488 goto op_semantics_7;
1491 goto op_semantics_8;
1494 goto op_semantics_9;
1497 goto op_semantics_10;
1500 goto op_semantics_11;
1503 goto op_semantics_12;
1506 goto op_semantics_13;
1509 goto op_semantics_14;
1512 goto op_semantics_15;
1518 switch (op[1] & 0xf0)
1521 goto op_semantics_1;
1524 goto op_semantics_2;
1527 goto op_semantics_3;
1530 goto op_semantics_4;
1534 goto op_semantics_18;
1537 goto op_semantics_6;
1540 goto op_semantics_7;
1543 goto op_semantics_8;
1546 goto op_semantics_9;
1549 goto op_semantics_10;
1552 goto op_semantics_11;
1555 goto op_semantics_12;
1558 goto op_semantics_13;
1561 goto op_semantics_14;
1564 goto op_semantics_15;
1570 switch (op[1] & 0x00)
1575 /** 0001 00so c b ad dreg %S%b %1 */
1576 #line 375 "msp430-decode.opc"
1577 int so AU = op[0] & 0x03;
1578 #line 375 "msp430-decode.opc"
1579 int c AU = (op[1] >> 7) & 0x01;
1580 #line 375 "msp430-decode.opc"
1581 int b AU = (op[1] >> 6) & 0x01;
1582 #line 375 "msp430-decode.opc"
1583 int ad AU = (op[1] >> 4) & 0x03;
1584 #line 375 "msp430-decode.opc"
1585 int dreg AU = op[1] & 0x0f;
1588 printf ("\033[33m%s\033[0m %02x %02x\n",
1589 "/** 0001 00so c b ad dreg %S%b %1 */",
1591 printf (" so = 0x%x,", so);
1592 printf (" c = 0x%x,", c);
1593 printf (" b = 0x%x,", b);
1594 printf (" ad = 0x%x,", ad);
1595 printf (" dreg = 0x%x\n", dreg);
1598 #line 375 "msp430-decode.opc"
1600 ID (sopc_to_id (so,c)); ASX (dreg, ad, srxt_bits); ABW (al_bit, b);
1603 REPZC (srxt_bits, dsxt_bits);
1605 /* the helper functions encode for source, but it's both source and
1606 dest, with a few documented exceptions. */
1607 msp430->op[0] = msp430->op[1];
1609 /* RETI ignores the operand */
1610 if (msp430->id == MSO_reti)
1611 msp430->syntax = "%S";
1615 case MSO_rrc: F_VNZC; break;
1616 case MSO_swpb: F_____; break;
1617 case MSO_rra: F_0NZC; break;
1618 case MSO_sxt: F_0NZC; break;
1619 case MSO_push: F_____; break;
1620 case MSO_call: F_____; break;
1621 case MSO_reti: F_VNZC; break;
1625 /* 20xx 0010 0000 ---- ----
1626 3cxx 0011 1100 ---- ----
1627 001j mp-- ---- ---- */
1634 switch (op[1] & 0x00)
1637 goto op_semantics_19;
1643 switch (op[1] & 0x00)
1646 goto op_semantics_19;
1652 switch (op[1] & 0xff)
1656 /** 0001 0011 0000 0000 RETI */
1659 printf ("\033[33m%s\033[0m %02x %02x\n",
1660 "/** 0001 0011 0000 0000 RETI */",
1664 #line 529 "msp430-decode.opc"
1667 msp430->ofs_430x = 1;
1814 goto op_semantics_19;
1881 /** 0001 0011 01as dstr CALLA %0 */
1882 #line 534 "msp430-decode.opc"
1883 int as AU = (op[1] >> 4) & 0x03;
1884 #line 534 "msp430-decode.opc"
1885 int dstr AU = op[1] & 0x0f;
1888 printf ("\033[33m%s\033[0m %02x %02x\n",
1889 "/** 0001 0011 01as dstr CALLA %0 */",
1891 printf (" as = 0x%x,", as);
1892 printf (" dstr = 0x%x\n", dstr);
1895 #line 534 "msp430-decode.opc"
1896 ID (MSO_call); AS (dstr, as);
1898 msp430->ofs_430x = 1;
1919 /** 0001 0011 1000 extb CALLA %0 */
1920 #line 539 "msp430-decode.opc"
1921 int extb AU = op[1] & 0x0f;
1924 printf ("\033[33m%s\033[0m %02x %02x\n",
1925 "/** 0001 0011 1000 extb CALLA %0 */",
1927 printf (" extb = 0x%x\n", extb);
1930 #line 539 "msp430-decode.opc"
1931 ID (MSO_call); SA (IMMU(2) | (extb << 16));
1933 msp430->ofs_430x = 1;
1954 /** 0001 0011 1001 extb CALLA %0 */
1955 #line 544 "msp430-decode.opc"
1956 int extb AU = op[1] & 0x0f;
1959 printf ("\033[33m%s\033[0m %02x %02x\n",
1960 "/** 0001 0011 1001 extb CALLA %0 */",
1962 printf (" extb = 0x%x\n", extb);
1965 #line 544 "msp430-decode.opc"
1966 raddr = IMMU(2) | (extb << 16);
1967 if (raddr & 0x80000)
1969 ID (MSO_call); SA (pc + raddr + msp430->n_bytes);
1971 msp430->ofs_430x = 1;
1992 /** 0001 0011 1011 extb CALLA %0 */
1993 #line 552 "msp430-decode.opc"
1994 int extb AU = op[1] & 0x0f;
1997 printf ("\033[33m%s\033[0m %02x %02x\n",
1998 "/** 0001 0011 1011 extb CALLA %0 */",
2000 printf (" extb = 0x%x\n", extb);
2003 #line 552 "msp430-decode.opc"
2004 ID (MSO_call); SC (IMMU(2) | (extb << 16));
2006 msp430->ofs_430x = 1;
2014 switch (op[1] & 0x00)
2019 /** 0001 010w bits srcr PUSHM.A %0 */
2020 #line 557 "msp430-decode.opc"
2021 int w AU = op[0] & 0x01;
2022 #line 557 "msp430-decode.opc"
2023 int bits AU = (op[1] >> 4) & 0x0f;
2024 #line 557 "msp430-decode.opc"
2025 int srcr AU = op[1] & 0x0f;
2028 printf ("\033[33m%s\033[0m %02x %02x\n",
2029 "/** 0001 010w bits srcr PUSHM.A %0 */",
2031 printf (" w = 0x%x,", w);
2032 printf (" bits = 0x%x,", bits);
2033 printf (" srcr = 0x%x\n", srcr);
2035 SYNTAX("PUSHM.A %0");
2036 #line 557 "msp430-decode.opc"
2037 ID (MSO_push); SR (srcr);
2038 msp430->size = w ? 16 : 20;
2039 msp430->repeats = bits;
2040 msp430->ofs_430x = 1;
2048 switch (op[1] & 0x00)
2051 goto op_semantics_20;
2057 switch (op[1] & 0x00)
2062 /** 0001 011w bits dstr POPM.A %0 */
2063 #line 563 "msp430-decode.opc"
2064 int w AU = op[0] & 0x01;
2065 #line 563 "msp430-decode.opc"
2066 int bits AU = (op[1] >> 4) & 0x0f;
2067 #line 563 "msp430-decode.opc"
2068 int dstr AU = op[1] & 0x0f;
2071 printf ("\033[33m%s\033[0m %02x %02x\n",
2072 "/** 0001 011w bits dstr POPM.A %0 */",
2074 printf (" w = 0x%x,", w);
2075 printf (" bits = 0x%x,", bits);
2076 printf (" dstr = 0x%x\n", dstr);
2078 SYNTAX("POPM.A %0");
2079 #line 563 "msp430-decode.opc"
2080 ID (MSO_pop); DR (dstr);
2081 msp430->size = w ? 16 : 20;
2082 msp430->repeats = bits;
2083 msp430->ofs_430x = 1;
2091 switch (op[1] & 0x00)
2094 goto op_semantics_21;
2100 switch (op[1] & 0x30)
2105 /** 0001 1srx t l 00 dsxt 430x */
2106 #line 329 "msp430-decode.opc"
2107 int srx AU = op[0] & 0x07;
2108 #line 329 "msp430-decode.opc"
2109 int t AU = (op[1] >> 7) & 0x01;
2110 #line 329 "msp430-decode.opc"
2111 int l AU = (op[1] >> 6) & 0x01;
2112 #line 329 "msp430-decode.opc"
2113 int dsxt AU = op[1] & 0x0f;
2116 printf ("\033[33m%s\033[0m %02x %02x\n",
2117 "/** 0001 1srx t l 00 dsxt 430x */",
2119 printf (" srx = 0x%x,", srx);
2120 printf (" t = 0x%x,", t);
2121 printf (" l = 0x%x,", l);
2122 printf (" dsxt = 0x%x\n", dsxt);
2125 #line 329 "msp430-decode.opc"
2128 srxt_bits = srx * 2 + t;
2130 op = op_buf + lds.op_ptr;
2131 msp430->ofs_430x = 1;
2132 goto post_extension_word;
2135 opcode:4 sreg:4 Ad:1 BW:1 As:2 Dreg:4
2138 opcode:9 BW:1 Ad:2 DSreg:4
2141 opcode:3 Cond:3 pcrel:10
2145 /* Double-Operand "opcode" fields */
2149 default: UNSUPPORTED(); break;
2154 switch (op[1] & 0x30)
2157 goto op_semantics_22;
2159 default: UNSUPPORTED(); break;
2164 switch (op[1] & 0x30)
2167 goto op_semantics_22;
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] & 0x00)
2229 /** 001jmp aa addrlsbs %J %1 */
2230 #line 405 "msp430-decode.opc"
2231 int jmp AU = (op[0] >> 2) & 0x07;
2232 #line 405 "msp430-decode.opc"
2233 int aa AU = op[0] & 0x03;
2234 #line 405 "msp430-decode.opc"
2235 int addrlsbs AU = op[1];
2238 printf ("\033[33m%s\033[0m %02x %02x\n",
2239 "/** 001jmp aa addrlsbs %J %1 */",
2241 printf (" jmp = 0x%x,", jmp);
2242 printf (" aa = 0x%x,", aa);
2243 printf (" addrlsbs = 0x%x\n", addrlsbs);
2246 #line 405 "msp430-decode.opc"
2248 raddr = (aa << 9) | (addrlsbs << 1);
2250 raddr = raddr - 0x800;
2251 /* This is a pc-relative jump, but we don't use SM because that
2252 would load the target address from the memory at X(PC), not use
2253 PC+X *as* the address. So we use SC to use the address, not the
2254 data at that address. */
2255 ID (MSO_jmp); SC (pc + raddr + msp430->n_bytes);
2258 /* Extended instructions */
2266 switch (op[1] & 0x00)
2269 goto op_semantics_23;
2275 switch (op[1] & 0x00)
2278 goto op_semantics_23;
2284 switch (op[1] & 0x00)
2287 goto op_semantics_23;
2293 switch (op[1] & 0x00)
2296 goto op_semantics_23;
2302 switch (op[1] & 0x00)
2305 goto op_semantics_23;
2311 switch (op[1] & 0x00)
2314 goto op_semantics_23;
2320 switch (op[1] & 0x00)
2323 goto op_semantics_23;
2329 switch (op[1] & 0x00)
2332 goto op_semantics_23;
2338 switch (op[1] & 0x00)
2341 goto op_semantics_23;
2347 switch (op[1] & 0x00)
2350 goto op_semantics_23;
2356 switch (op[1] & 0x00)
2359 goto op_semantics_23;
2365 switch (op[1] & 0x00)
2368 goto op_semantics_23;
2374 switch (op[1] & 0x00)
2377 goto op_semantics_23;
2383 switch (op[1] & 0x00)
2386 goto op_semantics_23;
2392 switch (op[1] & 0x00)
2395 goto op_semantics_23;
2401 switch (op[1] & 0x00)
2404 goto op_semantics_23;
2410 switch (op[1] & 0x00)
2413 goto op_semantics_23;
2419 switch (op[1] & 0x00)
2422 goto op_semantics_23;
2428 switch (op[1] & 0x00)
2431 goto op_semantics_23;
2437 switch (op[1] & 0x00)
2440 goto op_semantics_23;
2446 switch (op[1] & 0x00)
2449 goto op_semantics_23;
2455 switch (op[1] & 0x00)
2458 goto op_semantics_23;
2464 switch (op[1] & 0x00)
2467 goto op_semantics_23;
2473 switch (op[1] & 0x00)
2476 goto op_semantics_23;
2482 switch (op[1] & 0x00)
2485 goto op_semantics_23;
2491 switch (op[1] & 0x00)
2494 goto op_semantics_23;
2500 switch (op[1] & 0x00)
2503 goto op_semantics_23;
2509 switch (op[1] & 0x00)
2512 goto op_semantics_23;
2518 switch (op[1] & 0x00)
2521 goto op_semantics_23;
2527 switch (op[1] & 0x00)
2530 goto op_semantics_23;
2536 switch (op[1] & 0x00)
2539 goto op_semantics_23;
2545 switch (op[1] & 0x00)
2550 /** dopc sreg a b as dreg %D%b %1,%0 */
2551 #line 352 "msp430-decode.opc"
2552 int dopc AU = (op[0] >> 4) & 0x0f;
2553 #line 352 "msp430-decode.opc"
2554 int sreg AU = op[0] & 0x0f;
2555 #line 352 "msp430-decode.opc"
2556 int a AU = (op[1] >> 7) & 0x01;
2557 #line 352 "msp430-decode.opc"
2558 int b AU = (op[1] >> 6) & 0x01;
2559 #line 352 "msp430-decode.opc"
2560 int as AU = (op[1] >> 4) & 0x03;
2561 #line 352 "msp430-decode.opc"
2562 int dreg AU = op[1] & 0x0f;
2565 printf ("\033[33m%s\033[0m %02x %02x\n",
2566 "/** dopc sreg a b as dreg %D%b %1,%0 */",
2568 printf (" dopc = 0x%x,", dopc);
2569 printf (" sreg = 0x%x,", sreg);
2570 printf (" a = 0x%x,", a);
2571 printf (" b = 0x%x,", b);
2572 printf (" as = 0x%x,", as);
2573 printf (" dreg = 0x%x\n", dreg);
2575 SYNTAX("%D%b %1,%0");
2576 #line 352 "msp430-decode.opc"
2578 ID (dopc_to_id (dopc)); ASX (sreg, as, srxt_bits); ADX (dreg, a, dsxt_bits); ABW (al_bit, b);
2579 if (a == 0 && as == 0)
2580 REPZC (srxt_bits, dsxt_bits);
2584 case MSO_mov: F_____; break;
2585 case MSO_add: F_VNZC; break;
2586 case MSO_addc: F_VNZC; break;
2587 case MSO_subc: F_VNZC; break;
2588 case MSO_sub: F_VNZC; break;
2589 case MSO_cmp: F_VNZC; break;
2590 case MSO_dadd: F_VNZC; break;
2591 case MSO_bit: F_0NZC; break;
2592 case MSO_bic: F_____; break;
2593 case MSO_bis: F_____; break;
2594 case MSO_xor: F_VNZC; break;
2595 case MSO_and: F_0NZC; break;
2605 switch (op[1] & 0x00)
2608 goto op_semantics_24;
2614 switch (op[1] & 0x00)
2617 goto op_semantics_24;
2623 switch (op[1] & 0x00)
2626 goto op_semantics_24;
2632 switch (op[1] & 0x00)
2635 goto op_semantics_24;
2641 switch (op[1] & 0x00)
2644 goto op_semantics_24;
2650 switch (op[1] & 0x00)
2653 goto op_semantics_24;
2659 switch (op[1] & 0x00)
2662 goto op_semantics_24;
2668 switch (op[1] & 0x00)
2671 goto op_semantics_24;
2677 switch (op[1] & 0x00)
2680 goto op_semantics_24;
2686 switch (op[1] & 0x00)
2689 goto op_semantics_24;
2695 switch (op[1] & 0x00)
2698 goto op_semantics_24;
2704 switch (op[1] & 0x00)
2707 goto op_semantics_24;
2713 switch (op[1] & 0x00)
2716 goto op_semantics_24;
2722 switch (op[1] & 0x00)
2725 goto op_semantics_24;
2731 switch (op[1] & 0x00)
2734 goto op_semantics_24;
2740 switch (op[1] & 0x00)
2743 goto op_semantics_24;
2749 switch (op[1] & 0x00)
2752 goto op_semantics_24;
2758 switch (op[1] & 0x00)
2761 goto op_semantics_24;
2767 switch (op[1] & 0x00)
2770 goto op_semantics_24;
2776 switch (op[1] & 0x00)
2779 goto op_semantics_24;
2785 switch (op[1] & 0x00)
2788 goto op_semantics_24;
2794 switch (op[1] & 0x00)
2797 goto op_semantics_24;
2803 switch (op[1] & 0x00)
2806 goto op_semantics_24;
2812 switch (op[1] & 0x00)
2815 goto op_semantics_24;
2821 switch (op[1] & 0x00)
2824 goto op_semantics_24;
2830 switch (op[1] & 0x00)
2833 goto op_semantics_24;
2839 switch (op[1] & 0x00)
2842 goto op_semantics_24;
2848 switch (op[1] & 0x00)
2851 goto op_semantics_24;
2857 switch (op[1] & 0x00)
2860 goto op_semantics_24;
2866 switch (op[1] & 0x00)
2869 goto op_semantics_24;
2875 switch (op[1] & 0x00)
2878 goto op_semantics_24;
2884 switch (op[1] & 0x00)
2887 goto op_semantics_24;
2893 switch (op[1] & 0x00)
2896 goto op_semantics_24;
2902 switch (op[1] & 0x00)
2905 goto op_semantics_24;
2911 switch (op[1] & 0x00)
2914 goto op_semantics_24;
2920 switch (op[1] & 0x00)
2923 goto op_semantics_24;
2929 switch (op[1] & 0x00)
2932 goto op_semantics_24;
2938 switch (op[1] & 0x00)
2941 goto op_semantics_24;
2947 switch (op[1] & 0x00)
2950 goto op_semantics_24;
2956 switch (op[1] & 0x00)
2959 goto op_semantics_24;
2965 switch (op[1] & 0x00)
2968 goto op_semantics_24;
2974 switch (op[1] & 0x00)
2977 goto op_semantics_24;
2983 switch (op[1] & 0x00)
2986 goto op_semantics_24;
2992 switch (op[1] & 0x00)
2995 goto op_semantics_24;
3001 switch (op[1] & 0x00)
3004 goto op_semantics_24;
3010 switch (op[1] & 0x00)
3013 goto op_semantics_24;
3019 switch (op[1] & 0x00)
3022 goto op_semantics_24;
3028 switch (op[1] & 0x00)
3031 goto op_semantics_24;
3037 switch (op[1] & 0x00)
3040 goto op_semantics_24;
3046 switch (op[1] & 0x00)
3049 goto op_semantics_24;
3055 switch (op[1] & 0x00)
3058 goto op_semantics_24;
3064 switch (op[1] & 0x00)
3067 goto op_semantics_24;
3073 switch (op[1] & 0x00)
3076 goto op_semantics_24;
3082 switch (op[1] & 0x00)
3085 goto op_semantics_24;
3091 switch (op[1] & 0x00)
3094 goto op_semantics_24;
3100 switch (op[1] & 0x00)
3103 goto op_semantics_24;
3109 switch (op[1] & 0x00)
3112 goto op_semantics_24;
3118 switch (op[1] & 0x00)
3121 goto op_semantics_24;
3127 switch (op[1] & 0x00)
3130 goto op_semantics_24;
3136 switch (op[1] & 0x00)
3139 goto op_semantics_24;
3145 switch (op[1] & 0x00)
3148 goto op_semantics_24;
3154 switch (op[1] & 0x00)
3157 goto op_semantics_24;
3163 switch (op[1] & 0x00)
3166 goto op_semantics_24;
3172 switch (op[1] & 0x00)
3175 goto op_semantics_24;
3181 switch (op[1] & 0x00)
3184 goto op_semantics_24;
3190 switch (op[1] & 0x00)
3193 goto op_semantics_24;
3199 switch (op[1] & 0x00)
3202 goto op_semantics_24;
3208 switch (op[1] & 0x00)
3211 goto op_semantics_24;
3217 switch (op[1] & 0x00)
3220 goto op_semantics_24;
3226 switch (op[1] & 0x00)
3229 goto op_semantics_24;
3235 switch (op[1] & 0x00)
3238 goto op_semantics_24;
3244 switch (op[1] & 0x00)
3247 goto op_semantics_24;
3253 switch (op[1] & 0x00)
3256 goto op_semantics_24;
3262 switch (op[1] & 0x00)
3265 goto op_semantics_24;
3271 switch (op[1] & 0x00)
3274 goto op_semantics_24;
3280 switch (op[1] & 0x00)
3283 goto op_semantics_24;
3289 switch (op[1] & 0x00)
3292 goto op_semantics_24;
3298 switch (op[1] & 0x00)
3301 goto op_semantics_24;
3307 switch (op[1] & 0x00)
3310 goto op_semantics_24;
3316 switch (op[1] & 0x00)
3319 goto op_semantics_24;
3325 switch (op[1] & 0x00)
3328 goto op_semantics_24;
3334 switch (op[1] & 0x00)
3337 goto op_semantics_24;
3343 switch (op[1] & 0x00)
3346 goto op_semantics_24;
3352 switch (op[1] & 0x00)
3355 goto op_semantics_24;
3361 switch (op[1] & 0x00)
3364 goto op_semantics_24;
3370 switch (op[1] & 0x00)
3373 goto op_semantics_24;
3379 switch (op[1] & 0x00)
3382 goto op_semantics_24;
3388 switch (op[1] & 0x00)
3391 goto op_semantics_24;
3397 switch (op[1] & 0x00)
3400 goto op_semantics_24;
3406 switch (op[1] & 0x00)
3409 goto op_semantics_24;
3415 switch (op[1] & 0x00)
3418 goto op_semantics_24;
3424 switch (op[1] & 0x00)
3427 goto op_semantics_24;
3433 switch (op[1] & 0x00)
3436 goto op_semantics_24;
3442 switch (op[1] & 0x00)
3445 goto op_semantics_24;
3451 switch (op[1] & 0x00)
3454 goto op_semantics_24;
3460 switch (op[1] & 0x00)
3463 goto op_semantics_24;
3469 switch (op[1] & 0x00)
3472 goto op_semantics_24;
3478 switch (op[1] & 0x00)
3481 goto op_semantics_24;
3487 switch (op[1] & 0x00)
3490 goto op_semantics_24;
3496 switch (op[1] & 0x00)
3499 goto op_semantics_24;
3505 switch (op[1] & 0x00)
3508 goto op_semantics_24;
3514 switch (op[1] & 0x00)
3517 goto op_semantics_24;
3523 switch (op[1] & 0x00)
3526 goto op_semantics_24;
3532 switch (op[1] & 0x00)
3535 goto op_semantics_24;
3541 switch (op[1] & 0x00)
3544 goto op_semantics_24;
3550 switch (op[1] & 0x00)
3553 goto op_semantics_24;
3559 switch (op[1] & 0x00)
3562 goto op_semantics_24;
3568 switch (op[1] & 0x00)
3571 goto op_semantics_24;
3577 switch (op[1] & 0x00)
3580 goto op_semantics_24;
3586 switch (op[1] & 0x00)
3589 goto op_semantics_24;
3595 switch (op[1] & 0x00)
3598 goto op_semantics_24;
3604 switch (op[1] & 0x00)
3607 goto op_semantics_24;
3613 switch (op[1] & 0x00)
3616 goto op_semantics_24;
3622 switch (op[1] & 0x00)
3625 goto op_semantics_24;
3631 switch (op[1] & 0x00)
3634 goto op_semantics_24;
3640 switch (op[1] & 0x00)
3643 goto op_semantics_24;
3649 switch (op[1] & 0x00)
3652 goto op_semantics_24;
3658 switch (op[1] & 0x00)
3661 goto op_semantics_24;
3667 switch (op[1] & 0x00)
3670 goto op_semantics_24;
3676 switch (op[1] & 0x00)
3679 goto op_semantics_24;
3685 switch (op[1] & 0x00)
3688 goto op_semantics_24;
3694 switch (op[1] & 0x00)
3697 goto op_semantics_24;
3703 switch (op[1] & 0x00)
3706 goto op_semantics_24;
3712 switch (op[1] & 0x00)
3715 goto op_semantics_24;
3721 switch (op[1] & 0x00)
3724 goto op_semantics_24;
3730 switch (op[1] & 0x00)
3733 goto op_semantics_24;
3739 switch (op[1] & 0x00)
3742 goto op_semantics_24;
3748 switch (op[1] & 0x00)
3751 goto op_semantics_24;
3757 switch (op[1] & 0x00)
3760 goto op_semantics_24;
3766 switch (op[1] & 0x00)
3769 goto op_semantics_24;
3775 switch (op[1] & 0x00)
3778 goto op_semantics_24;
3784 switch (op[1] & 0x00)
3787 goto op_semantics_24;
3793 switch (op[1] & 0x00)
3796 goto op_semantics_24;
3802 switch (op[1] & 0x00)
3805 goto op_semantics_24;
3811 switch (op[1] & 0x00)
3814 goto op_semantics_24;
3820 switch (op[1] & 0x00)
3823 goto op_semantics_24;
3829 switch (op[1] & 0x00)
3832 goto op_semantics_24;
3838 switch (op[1] & 0x00)
3841 goto op_semantics_24;
3847 switch (op[1] & 0x00)
3850 goto op_semantics_24;
3856 switch (op[1] & 0x00)
3859 goto op_semantics_24;
3865 switch (op[1] & 0x00)
3868 goto op_semantics_24;
3874 switch (op[1] & 0x00)
3877 goto op_semantics_24;
3883 switch (op[1] & 0x00)
3886 goto op_semantics_24;
3892 switch (op[1] & 0x00)
3895 goto op_semantics_24;
3901 switch (op[1] & 0x00)
3904 goto op_semantics_24;
3910 switch (op[1] & 0x00)
3913 goto op_semantics_24;
3919 switch (op[1] & 0x00)
3922 goto op_semantics_24;
3928 switch (op[1] & 0x00)
3931 goto op_semantics_24;
3937 switch (op[1] & 0x00)
3940 goto op_semantics_24;
3946 switch (op[1] & 0x00)
3949 goto op_semantics_24;
3955 switch (op[1] & 0x00)
3958 goto op_semantics_24;
3964 switch (op[1] & 0x00)
3967 goto op_semantics_24;
3973 switch (op[1] & 0x00)
3976 goto op_semantics_24;
3982 switch (op[1] & 0x00)
3985 goto op_semantics_24;
3991 switch (op[1] & 0x00)
3994 goto op_semantics_24;
4000 switch (op[1] & 0x00)
4003 goto op_semantics_24;
4009 switch (op[1] & 0x00)
4012 goto op_semantics_24;
4018 switch (op[1] & 0x00)
4021 goto op_semantics_24;
4027 switch (op[1] & 0x00)
4030 goto op_semantics_24;
4036 switch (op[1] & 0x00)
4039 goto op_semantics_24;
4045 switch (op[1] & 0x00)
4048 goto op_semantics_24;
4054 switch (op[1] & 0x00)
4057 goto op_semantics_24;
4063 switch (op[1] & 0x00)
4066 goto op_semantics_24;
4072 switch (op[1] & 0x00)
4075 goto op_semantics_24;
4081 switch (op[1] & 0x00)
4084 goto op_semantics_24;
4090 switch (op[1] & 0x00)
4093 goto op_semantics_24;
4099 switch (op[1] & 0x00)
4102 goto op_semantics_24;
4108 switch (op[1] & 0x00)
4111 goto op_semantics_24;
4117 switch (op[1] & 0x00)
4120 goto op_semantics_24;
4126 switch (op[1] & 0x00)
4129 goto op_semantics_24;
4135 switch (op[1] & 0x00)
4138 goto op_semantics_24;
4144 switch (op[1] & 0x00)
4147 goto op_semantics_24;
4153 switch (op[1] & 0x00)
4156 goto op_semantics_24;
4162 switch (op[1] & 0x00)
4165 goto op_semantics_24;
4171 switch (op[1] & 0x00)
4174 goto op_semantics_24;
4180 switch (op[1] & 0x00)
4183 goto op_semantics_24;
4189 switch (op[1] & 0x00)
4192 goto op_semantics_24;
4198 switch (op[1] & 0x00)
4201 goto op_semantics_24;
4207 switch (op[1] & 0x00)
4210 goto op_semantics_24;
4216 switch (op[1] & 0x00)
4219 goto op_semantics_24;
4225 switch (op[1] & 0x00)
4228 goto op_semantics_24;
4234 switch (op[1] & 0x00)
4237 goto op_semantics_24;
4243 switch (op[1] & 0x00)
4246 goto op_semantics_24;
4252 switch (op[1] & 0x00)
4255 goto op_semantics_24;
4261 switch (op[1] & 0x00)
4264 goto op_semantics_24;
4270 switch (op[1] & 0x00)
4273 goto op_semantics_24;
4279 switch (op[1] & 0x00)
4282 goto op_semantics_24;
4288 switch (op[1] & 0x00)
4291 goto op_semantics_24;
4297 switch (op[1] & 0x00)
4300 goto op_semantics_24;
4306 switch (op[1] & 0x00)
4309 goto op_semantics_24;
4315 switch (op[1] & 0x00)
4318 goto op_semantics_24;
4323 #line 569 "msp430-decode.opc"
4325 /*printf("<\033[34m%d\033[0m>", msp430->n_bytes);*/
4326 return msp430->n_bytes;