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