1 #line 1 "msp430-decode.opc"
3 /* Copyright (C) 2013-2015 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
;