Stop indexed move byte instructions from being relaxed.
authorNick Clifton <nickc@redhat.com>
Wed, 21 Jan 2004 11:17:53 +0000 (11:17 +0000)
committerNick Clifton <nickc@redhat.com>
Wed, 21 Jan 2004 11:17:53 +0000 (11:17 +0000)
bfd/ChangeLog
bfd/bfd-in2.h
bfd/libbfd.h
bfd/opncls.c
bfd/reloc.c
gas/ChangeLog
gas/config/tc-m68hc11.c
gas/testsuite/ChangeLog
gas/testsuite/gas/m68hc11/m68hc11.exp
gas/testsuite/gas/m68hc11/movb.d [new file with mode: 0644]
gas/testsuite/gas/m68hc11/movb.s [new file with mode: 0644]

index 6818677152fd2acf48d855f67535e456a114d6f7..c1c024c5e4ef4475434c54b65723aa7882866e43 100644 (file)
@@ -1,3 +1,8 @@
+2004-01-21  Tom Rix  <tcrix@worldnet.att.net>
+
+       * reloc.c: New 5 bit reloc, BFD_RELOC_M68HC12_5B, for m68hc12 movb/movw.
+       * bfd-in2.h, libbfd.h: Rebuilt.
+
 2004-01-20  Danny Smith  <dannysmith@users.sourceforge.net>
 
        * peXXigen.c (_bfd_XXi_swap_scnhdr_out): Don't remove
index 4cc59e0bfbee424156849f0b55aabd5d9bc8e032..f66c29ce23cff194e774c8bed641e0500770303c 100644 (file)
@@ -3377,6 +3377,10 @@ value and a 8-bit page number.  The symbol address is transformed
 to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
   BFD_RELOC_M68HC11_24,
 
+/* Motorola 68HC12 reloc.
+This is the 5 bits of a value.  */
+  BFD_RELOC_M68HC12_5B,
+
 /* These relocs are only used within the CRIS assembler.  They are not
 (at present) written to any object files.  */
   BFD_RELOC_CRIS_BDISP8,
index d6ee8f33b43f8da3667b73f180e173555aa46848..40e1b789f9aa1bdf937135fcc57f6500ba68f18b 100644 (file)
@@ -1430,6 +1430,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_M68HC11_LO16",
   "BFD_RELOC_M68HC11_PAGE",
   "BFD_RELOC_M68HC11_24",
+  "BFD_RELOC_M68HC12_5B",
   "BFD_RELOC_CRIS_BDISP8",
   "BFD_RELOC_CRIS_UNSIGNED_5",
   "BFD_RELOC_CRIS_SIGNED_6",
index 96f1e14ccdadcbf3aeadc2cdddbc73f1d1c9296d..6abd40509ca2af4e0791ac2f693cc4b95e76bc91 100644 (file)
@@ -70,8 +70,7 @@ _bfd_new_bfd (void)
   nbfd->direction = no_direction;
   nbfd->iostream = NULL;
   nbfd->where = 0;
-  if (!bfd_hash_table_init_n (&nbfd->section_htab,
-                             bfd_section_hash_newfunc,
+  if (!bfd_hash_table_init_n (& nbfd->section_htab, bfd_section_hash_newfunc,
                              251))
     {
       free (nbfd);
@@ -923,7 +922,7 @@ find_separate_debug_file (bfd *abfd, const char *debug_file_directory)
   for (i = strlen (dir) - 1; i >= 0; i--)
     if (IS_DIR_SEPARATOR (dir[i]))
       break;
-  
+
   dir[i + 1] = '\0';
   BFD_ASSERT (dir[i] == '/' || dir[0] == '\0')
 
@@ -996,23 +995,26 @@ SYNOPSIS
 DESCRIPTION
 
        Takes a BFD and searches it for a .gnu_debuglink section.  If this
-       section is found, examines the section for the name and checksum of
-       a '.debug' file containing auxiliary debugging
-       information. Searches filesystem for .debug file in some standard
+       section is found, it examines the section for the name and checksum
+       of a '.debug' file containing auxiliary debugging information.  It
+       then searches the filesystem for this .debug file in some standard
        locations, including the directory tree rooted at @var{dir}, and if
-       found returns the full filename. If @var{dir} is NULL, will search
-       default path configured into libbfd at build time.
+       found returns the full filename.
+
+       If @var{dir} is NULL, it will search a default path configured into
+       libbfd at build time.  [XXX this feature is not currently
+       implemented].
 
 RETURNS
        <<NULL>> on any errors or failure to locate the .debug file,
        otherwise a pointer to a heap-allocated string containing the
-       filename. The caller is responsible for freeing this string.
+       filename.  The caller is responsible for freeing this string.
 */
 
 char *
 bfd_follow_gnu_debuglink (bfd *abfd, const char *dir)
 {
-#if 0 /* Disabled until DEBUGDIR can be defined by configure.in  */
+#if 0 /* Disabled until DEBUGDIR can be defined by configure.in.  */
   if (dir == NULL)
     dir = DEBUGDIR;
 #endif
index d3a6534b7c935abf91306fc105c5106a0676f6ca..9bffaa365885fe675528ac50a22b435a2b9413c2 100644 (file)
@@ -1,6 +1,6 @@
 /* BFD support for handling relocation entries.
    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-   2000, 2001, 2002, 2003
+   2000, 2001, 2002, 2003, 2004
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -3764,6 +3764,11 @@ ENUMDOC
   This is a 24-bit reloc that represents the address with a 16-bit
   value and a 8-bit page number.  The symbol address is transformed
   to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
+ENUM
+  BFD_RELOC_M68HC12_5B
+ENUMDOC
+  Motorola 68HC12 reloc.
+  This is the 5 bits of a value.
 
 ENUM
   BFD_RELOC_CRIS_BDISP8
index cf68b2a2f9a172d840f21f4ab349d0438c55266d..c855fccd72731b300f55bd48891fe22f6c0e24e3 100644 (file)
@@ -1,3 +1,9 @@
+2004-01-11  Tom Rix   <tcrix@worldnet.att.net>
+
+       * config/tc-m68hc11.c (build_indexed_byte): movb and movw cannot
+       be relaxed, use fixup. 
+       (md_apply_fix3): Use 5 bit reloc from movb and movw fixup.
+
 2004-01-19  Jakub Jelinek  <jakub@redhat.com>
 
        * config/tc-sparc.c (sparc_ip): Disallow %f32-%f63 for single
index 812cda541d9e749a48bdf9f86dea0788828d12f6..780f773fc91bc1a93863118b1b1e9fcd4d4c2927 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-m68hc11.c -- Assembler code for the Motorola 68HC11 & 68HC12.
-   Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
    Written by Stephane Carrez (stcarrez@nerim.fr)
 
    This file is part of GAS, the GNU Assembler.
@@ -1951,18 +1951,43 @@ build_indexed_byte (operand *op, int format ATTRIBUTE_UNUSED, int move_insn)
               sym = make_expr_symbol (&op->exp);
               off = 0;
             }
-         frag_var (rs_machine_dependent, 2, 2,
-                   ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_UNDF),
-                   sym, off, f);
+         /* movb/movw cannot be relaxed.  */
+         if (move_insn)
+           {
+             byte <<= 6;
+             number_to_chars_bigendian (f, byte, 1);
+             fix_new (frag_now, f - frag_now->fr_literal, 1,
+                      sym, off, 0, BFD_RELOC_M68HC12_5B);
+             return 1;
+           }
+         else
+           {
+             number_to_chars_bigendian (f, byte, 1);
+             frag_var (rs_machine_dependent, 2, 2,
+                       ENCODE_RELAX (STATE_INDEXED_OFFSET, STATE_UNDF),
+                       sym, off, f);
+           }
        }
       else
        {
          f = frag_more (1);
-         number_to_chars_bigendian (f, byte, 1);
-         frag_var (rs_machine_dependent, 2, 2,
-                   ENCODE_RELAX (STATE_INDEXED_PCREL, STATE_UNDF),
-                   op->exp.X_add_symbol,
-                   op->exp.X_add_number, f);
+         /* movb/movw cannot be relaxed.  */
+         if (move_insn)
+           {
+             byte <<= 6;
+             number_to_chars_bigendian (f, byte, 1);
+             fix_new (frag_now, f - frag_now->fr_literal, 1,
+                      op->exp.X_add_symbol, op->exp.X_add_number, 0, BFD_RELOC_M68HC12_5B);
+             return 1;
+           }
+         else
+           {
+             number_to_chars_bigendian (f, byte, 1);
+             frag_var (rs_machine_dependent, 2, 2,
+                       ENCODE_RELAX (STATE_INDEXED_PCREL, STATE_UNDF),
+                       op->exp.X_add_symbol,
+                       op->exp.X_add_number, f);
+           }
        }
       return 3;
     }
@@ -3287,6 +3312,17 @@ md_apply_fix3 (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
       where[0] = where[0] | (value & 0x07);
       break;
 
+    case BFD_RELOC_M68HC12_5B:
+      if (value < -16 || value > 15)
+       as_bad_where (fixP->fx_file, fixP->fx_line,
+                     _("Offset out of 5-bit range for movw/movb insn: %ld"),
+                     value);
+      if (value >= 0)
+       where[0] |= value;
+      else 
+       where[0] |= (0x10 | (16 + value));
+      break;
+
     case BFD_RELOC_M68HC11_RL_JUMP:
     case BFD_RELOC_M68HC11_RL_GROUP:
     case BFD_RELOC_VTABLE_INHERIT:
index 234176815b72d442bc171f137f8409ff0fbf2657..d1b388595598482f7f8aa3f6d8342af8759c36d9 100644 (file)
@@ -1,3 +1,9 @@
+2004-01-11 Tom Rix   <tcrix@worldnet.att.net>
+
+       * gas/m68hc11/movb.s: Add m68hc12 movb and movw dump test.
+       * gas/m68hc11/movb.d: Likewise.
+       * gas/m68hc11/m68hc11.exp: Likewise.  Add more movb failure tests.
+
 2004-01-19  Alan Modra  <amodra@bigpond.net.au>
 
        * gas/i386/katmai.d: Adjust for changed sib printing.
index 8764777742ac28878ae4ff44928e1b7710831bf3..2bfa8803aab5b17f99115b891f1176c9debe332e 100644 (file)
@@ -140,11 +140,21 @@ gas_m68hc11_error "-m68hc12" "movb 200,x,3,y\n" \
     "Offset out of 5-bit range for movw/movb insn: 200"
 gas_m68hc11_error "-m68hc12" "movb 2,x,300,y\n" \
     "Offset out of 5-bit range for movw/movb insn: 300"
+gas_m68hc11_error "-m68hc12" "movb 2,x,bar,y\nbar=300\n" \
+    "Offset out of 5-bit range for movw/movb insn: 300"
+gas_m68hc11_error "-m68hc12" "movb bar,y,2,x\nbar=300\n" \
+    "Offset out of 5-bit range for movw/movb insn: 300"
+gas_m68hc11_error "-m68hc12" "movb 200,pc,3,y\n" \
+    "Offset out of 5-bit range for movw/movb insn: 200"
+gas_m68hc11_error "-m68hc12" "movb 2,x,300,pc\n" \
+    "Offset out of 5-bit range for movw/movb insn: 300"
+gas_m68hc11_error "-m68hc12" "movb 2,x,bar,pc\nbar=300\n" \
+    "Offset out of 5-bit range for movw/movb insn: 300"
+gas_m68hc11_error "-m68hc12" "movb bar,pc,2,x\nbar=300\n" \
+    "Offset out of 5-bit range for movw/movb insn: 300"
 
 setup_xfail m6811-*-*
 setup_xfail m6812-*-*
-gas_m68hc11_error "-m68hc12" "movb 2,x,bar,y\nbar=300\n" \
-    "Offset out of 5-bit range for movw/movb insn: 300"
 
 # ------------------
 # Specific commands
@@ -173,3 +183,4 @@ run_dump_test branchs12
 run_dump_test insns12
 run_dump_test indexed12
 run_dump_test bug-1825
+run_dump_test movb
diff --git a/gas/testsuite/gas/m68hc11/movb.d b/gas/testsuite/gas/m68hc11/movb.d
new file mode 100644 (file)
index 0000000..4ef5e81
--- /dev/null
@@ -0,0 +1,451 @@
+#objdump: -D
+#as: -m68hc12
+#name: 68HC12 movb movw instructions
+
+.*:  +file format elf32\-m68hc12
+
+Disassembly of section .text:
+
+0+00 <\.text>:
+[ ]+ 0:        86 00[ ]+       ldaa    #0
+[ ]+ 2:        18 0a 0f 0f     movb    15,X, 15,X
+[ ]+ 6:        18 0a 0f 0f     movb    15,X, 15,X
+[ ]+ a:        18 0a 0f 0f     movb    15,X, 15,X
+[ ]+ e:        86 01[ ]+       ldaa    #1
+[ ]+10:        18 0a 0f 0f     movb    15,X, 15,X
+[ ]+14:        18 0a 0f 0f     movb    15,X, 15,X
+[ ]+18:        18 0a 0f 0f     movb    15,X, 15,X
+[ ]+1c:        86 02[ ]+       ldaa    #2
+[ ]+1e:        18 0a 0f 10     movb    15,X, \-16,X
+[ ]+22:        18 0a 0f 10     movb    15,X, \-16,X
+[ ]+26:        18 0a 0f 10     movb    15,X, \-16,X
+[ ]+2a:        86 03[ ]+       ldaa    #3
+[ ]+2c:        18 0a 10 0f     movb    \-16,X, 15,X
+[ ]+30:        18 0a 10 0f     movb    \-16,X, 15,X
+[ ]+34:        18 0a 10 0f     movb    \-16,X, 15,X
+[ ]+38:        86 04[ ]+       ldaa    #4
+[ ]+3a:        18 02 0f 0f     movw    15,X, 15,X
+[ ]+3e:        18 02 0f 0f     movw    15,X, 15,X
+[ ]+42:        18 02 0f 0f     movw    15,X, 15,X
+[ ]+46:        86 05[ ]+       ldaa    #5
+[ ]+48:        18 02 0f 0f     movw    15,X, 15,X
+[ ]+4c:        18 02 0f 0f     movw    15,X, 15,X
+[ ]+50:        18 02 0f 0f     movw    15,X, 15,X
+[ ]+54:        86 06[ ]+       ldaa    #6
+[ ]+56:        18 02 0f 10     movw    15,X, \-16,X
+[ ]+5a:        18 02 0f 10     movw    15,X, \-16,X
+[ ]+5e:        18 02 0f 10     movw    15,X, \-16,X
+[ ]+62:        86 07[ ]+       ldaa    #7
+[ ]+64:        18 02 10 0f     movw    \-16,X, 15,X
+[ ]+68:        18 02 10 0f     movw    \-16,X, 15,X
+[ ]+6c:        18 02 10 0f     movw    \-16,X, 15,X
+[ ]+70:        86 08[ ]+       ldaa    #8
+[ ]+72:        18 0a 4f 4f     movb    15,Y, 15,Y
+[ ]+76:        18 0a 4f 4f     movb    15,Y, 15,Y
+[ ]+7a:        18 0a 4f 4f     movb    15,Y, 15,Y
+[ ]+7e:        86 09[ ]+       ldaa    #9
+[ ]+80:        18 0a 4f 4f     movb    15,Y, 15,Y
+[ ]+84:        18 0a 4f 4f     movb    15,Y, 15,Y
+[ ]+88:        18 0a 4f 4f     movb    15,Y, 15,Y
+[ ]+8c:        86 0a[ ]+       ldaa    #10
+[ ]+8e:        18 0a 4f 50     movb    15,Y, \-16,Y
+[ ]+92:        18 0a 4f 50     movb    15,Y, \-16,Y
+[ ]+96:        18 0a 4f 50     movb    15,Y, \-16,Y
+[ ]+9a:        86 0b[ ]+       ldaa    #11
+[ ]+9c:        18 0a 50 4f     movb    \-16,Y, 15,Y
+[ ]+a0:        18 0a 50 4f     movb    \-16,Y, 15,Y
+[ ]+a4:        18 0a 50 4f     movb    \-16,Y, 15,Y
+[ ]+a8:        86 0c[ ]+       ldaa    #12
+[ ]+aa:        18 02 4f 4f     movw    15,Y, 15,Y
+[ ]+ae:        18 02 4f 4f     movw    15,Y, 15,Y
+[ ]+b2:        18 02 4f 4f     movw    15,Y, 15,Y
+[ ]+b6:        86 0d[ ]+       ldaa    #13
+[ ]+b8:        18 02 4f 4f     movw    15,Y, 15,Y
+[ ]+bc:        18 02 4f 4f     movw    15,Y, 15,Y
+[ ]+c0:        18 02 4f 4f     movw    15,Y, 15,Y
+[ ]+c4:        86 0e[ ]+       ldaa    #14
+[ ]+c6:        18 02 4f 50     movw    15,Y, \-16,Y
+[ ]+ca:        18 02 4f 50     movw    15,Y, \-16,Y
+[ ]+ce:        18 02 4f 50     movw    15,Y, \-16,Y
+[ ]+d2:        86 0f[ ]+       ldaa    #15
+[ ]+d4:        18 02 50 4f     movw    \-16,Y, 15,Y
+[ ]+d8:        18 02 50 4f     movw    \-16,Y, 15,Y
+[ ]+dc:        18 02 50 4f     movw    \-16,Y, 15,Y
+[ ]+e0:        86 10[ ]+       ldaa    #16
+[ ]+e2:        18 0a 4f cf     movb    15,Y, 15,PC \{f5 <cat2\+0xe6>\}
+[ ]+e6:        18 0a 4f cf     movb    15,Y, 15,PC \{f9 <cat2\+0xea>\}
+[ ]+ea:        18 0a 4f cf     movb    15,Y, 15,PC \{fd <cat2\+0xee>\}
+[ ]+ee:        86 11[ ]+       ldaa    #17
+[ ]+f0:        18 0a 4f cf     movb    15,Y, 15,PC \{103 <cat2\+0xf4>\}
+[ ]+f4:        18 0a 4f cf     movb    15,Y, 15,PC \{107 <cat2\+0xf8>\}
+[ ]+f8:        18 0a 4f cf     movb    15,Y, 15,PC \{10b <cat2\+0xfc>\}
+[ ]+fc:        86 12[ ]+       ldaa    #18
+[ ]+fe:        18 0a 4f d0     movb    15,Y, \-16,PC \{f2 <cat2\+0xe3>\}
+ 102:  18 0a 4f d0     movb    15,Y, \-16,PC \{f6 <cat2\+0xe7>\}
+ 106:  18 0a 4f d0     movb    15,Y, \-16,PC \{fa <cat2\+0xeb>\}
+ 10a:  86 13[ ]+       ldaa    #19
+ 10c:  18 0a 50 cf     movb    \-16,Y, 15,PC \{11f <cat2\+0x110>\}
+ 110:  18 0a 50 cf     movb    \-16,Y, 15,PC \{123 <cat2\+0x114>\}
+ 114:  18 0a 50 cf     movb    \-16,Y, 15,PC \{127 <cat2\+0x118>\}
+ 118:  86 14[ ]+       ldaa    #20
+ 11a:  18 02 4f cf     movw    15,Y, 15,PC \{12d <cat2\+0x11e>\}
+ 11e:  18 02 4f cf     movw    15,Y, 15,PC \{131 <cat2\+0x122>\}
+ 122:  18 02 4f cf     movw    15,Y, 15,PC \{135 <cat2\+0x126>\}
+ 126:  86 15[ ]+       ldaa    #21
+ 128:  18 02 4f cf     movw    15,Y, 15,PC \{13b <cat2\+0x12c>\}
+ 12c:  18 02 4f cf     movw    15,Y, 15,PC \{13f <cat2\+0x130>\}
+ 130:  18 02 4f cf     movw    15,Y, 15,PC \{143 <cat2\+0x134>\}
+ 134:  86 16[ ]+       ldaa    #22
+ 136:  18 02 4f d0     movw    15,Y, \-16,PC \{12a <cat2\+0x11b>\}
+ 13a:  18 02 4f d0     movw    15,Y, \-16,PC \{12e <cat2\+0x11f>\}
+ 13e:  18 02 4f d0     movw    15,Y, \-16,PC \{132 <cat2\+0x123>\}
+ 142:  86 17[ ]+       ldaa    #23
+ 144:  18 02 50 cf     movw    \-16,Y, 15,PC \{157 <cat2\+0x148>\}
+ 148:  18 02 50 cf     movw    \-16,Y, 15,PC \{15b <cat2\+0x14c>\}
+ 14c:  18 02 50 cf     movw    \-16,Y, 15,PC \{15f <cat2\+0x150>\}
+ 150:  86 18[ ]+       ldaa    #24
+ 152:  18 0a 8f cf     movb    15,SP, 15,PC \{165 <cat2\+0x156>\}
+ 156:  18 0a 8f cf     movb    15,SP, 15,PC \{169 <cat2\+0x15a>\}
+ 15a:  18 0a 8f cf     movb    15,SP, 15,PC \{16d <cat2\+0x15e>\}
+ 15e:  86 19[ ]+       ldaa    #25
+ 160:  18 0a 8f cf     movb    15,SP, 15,PC \{173 <cat2\+0x164>\}
+ 164:  18 0a 8f cf     movb    15,SP, 15,PC \{177 <cat2\+0x168>\}
+ 168:  18 0a 8f cf     movb    15,SP, 15,PC \{17b <cat2\+0x16c>\}
+ 16c:  86 1a[ ]+       ldaa    #26
+ 16e:  18 0a 8f d0     movb    15,SP, \-16,PC \{162 <cat2\+0x153>\}
+ 172:  18 0a 8f d0     movb    15,SP, \-16,PC \{166 <cat2\+0x157>\}
+ 176:  18 0a 8f d0     movb    15,SP, \-16,PC \{16a <cat2\+0x15b>\}
+ 17a:  86 1b[ ]+       ldaa    #27
+ 17c:  18 0a 90 cf     movb    \-16,SP, 15,PC \{18f <cat2\+0x180>\}
+ 180:  18 0a 90 cf     movb    \-16,SP, 15,PC \{193 <cat2\+0x184>\}
+ 184:  18 0a 90 cf     movb    \-16,SP, 15,PC \{197 <cat2\+0x188>\}
+ 188:  86 1c[ ]+       ldaa    #28
+ 18a:  18 02 8f cf     movw    15,SP, 15,PC \{19d <cat2\+0x18e>\}
+ 18e:  18 02 8f cf     movw    15,SP, 15,PC \{1a1 <cat2\+0x192>\}
+ 192:  18 02 8f cf     movw    15,SP, 15,PC \{1a5 <cat2\+0x196>\}
+ 196:  86 1d[ ]+       ldaa    #29
+ 198:  18 02 8f cf     movw    15,SP, 15,PC \{1ab <cat2\+0x19c>\}
+ 19c:  18 02 8f cf     movw    15,SP, 15,PC \{1af <cat2\+0x1a0>\}
+ 1a0:  18 02 8f cf     movw    15,SP, 15,PC \{1b3 <cat2\+0x1a4>\}
+ 1a4:  86 1e[ ]+       ldaa    #30
+ 1a6:  18 02 8f d0     movw    15,SP, \-16,PC \{19a <cat2\+0x18b>\}
+ 1aa:  18 02 8f d0     movw    15,SP, \-16,PC \{19e <cat2\+0x18f>\}
+ 1ae:  18 02 8f d0     movw    15,SP, \-16,PC \{1a2 <cat2\+0x193>\}
+ 1b2:  86 1f[ ]+       ldaa    #31
+ 1b4:  18 02 90 cf     movw    \-16,SP, 15,PC \{1c7 <cat2\+0x1b8>\}
+ 1b8:  18 02 90 cf     movw    \-16,SP, 15,PC \{1cb <cat2\+0x1bc>\}
+ 1bc:  18 02 90 cf     movw    \-16,SP, 15,PC \{1cf <cat2\+0x1c0>\}
+ 1c0:  86 20[ ]+       ldaa    #32
+ 1c2:  18 09 0f 10     movb    1000 <cat2\+0xff1>, 15,X
+ 1c6:  00 
+ 1c7:  18 09 0f 10     movb    1000 <cat2\+0xff1>, 15,X
+ 1cb:  00 
+ 1cc:  18 09 0f 10     movb    1000 <cat2\+0xff1>, 15,X
+ 1d0:  00 
+ 1d1:  86 21[ ]+       ldaa    #33
+ 1d3:  18 0d 0f 10     movb    15,X, 1000 <cat2\+0xff1>
+ 1d7:  00 
+ 1d8:  18 0d 0f 10     movb    15,X, 1000 <cat2\+0xff1>
+ 1dc:  00 
+ 1dd:  18 0d 0f 10     movb    15,X, 1000 <cat2\+0xff1>
+ 1e1:  00 
+ 1e2:  86 22[ ]+       ldaa    #34
+ 1e4:  18 09 10 10     movb    1000 <cat2\+0xff1>, \-16,X
+ 1e8:  00 
+ 1e9:  18 09 10 10     movb    1000 <cat2\+0xff1>, \-16,X
+ 1ed:  00 
+ 1ee:  18 09 10 10     movb    1000 <cat2\+0xff1>, \-16,X
+ 1f2:  00 
+ 1f3:  86 23[ ]+       ldaa    #35
+ 1f5:  18 0d 10 10     movb    \-16,X, 1000 <cat2\+0xff1>
+ 1f9:  00 
+ 1fa:  18 0d 10 10     movb    \-16,X, 1000 <cat2\+0xff1>
+ 1fe:  00 
+ 1ff:  18 0d 10 10     movb    \-16,X, 1000 <cat2\+0xff1>
+ 203:  00 
+ 204:  86 24[ ]+       ldaa    #36
+ 206:  18 01 0f 10     movw    1002 <cat2\+0xff3>, 15,X
+ 20a:  02 
+ 20b:  18 01 0f 10     movw    1002 <cat2\+0xff3>, 15,X
+ 20f:  02 
+ 210:  18 01 0f 10     movw    1002 <cat2\+0xff3>, 15,X
+ 214:  02 
+ 215:  86 25[ ]+       ldaa    #37
+ 217:  18 05 0f 10     movw    15,X, 1002 <cat2\+0xff3>
+ 21b:  02 
+ 21c:  18 05 0f 10     movw    15,X, 1002 <cat2\+0xff3>
+ 220:  02 
+ 221:  18 05 0f 10     movw    15,X, 1002 <cat2\+0xff3>
+ 225:  02 
+ 226:  86 26[ ]+       ldaa    #38
+ 228:  18 01 10 10     movw    1002 <cat2\+0xff3>, \-16,X
+ 22c:  02 
+ 22d:  18 01 10 10     movw    1002 <cat2\+0xff3>, \-16,X
+ 231:  02 
+ 232:  18 01 10 10     movw    1002 <cat2\+0xff3>, \-16,X
+ 236:  02 
+ 237:  86 27[ ]+       ldaa    #39
+ 239:  18 05 10 10     movw    \-16,X, 1002 <cat2\+0xff3>
+ 23d:  02 
+ 23e:  18 05 10 10     movw    \-16,X, 1002 <cat2\+0xff3>
+ 242:  02 
+ 243:  18 05 10 10     movw    \-16,X, 1002 <cat2\+0xff3>
+ 247:  02 
+ 248:  86 28[ ]+       ldaa    #40
+ 24a:  18 09 4f 10     movb    1000 <cat2\+0xff1>, 15,Y
+ 24e:  00 
+ 24f:  18 09 4f 10     movb    1000 <cat2\+0xff1>, 15,Y
+ 253:  00 
+ 254:  18 09 4f 10     movb    1000 <cat2\+0xff1>, 15,Y
+ 258:  00 
+ 259:  86 29[ ]+       ldaa    #41
+ 25b:  18 0d 4f 10     movb    15,Y, 1000 <cat2\+0xff1>
+ 25f:  00 
+ 260:  18 0d 4f 10     movb    15,Y, 1000 <cat2\+0xff1>
+ 264:  00 
+ 265:  18 0d 4f 10     movb    15,Y, 1000 <cat2\+0xff1>
+ 269:  00 
+ 26a:  86 2a[ ]+       ldaa    #42
+ 26c:  18 09 50 10     movb    1000 <cat2\+0xff1>, \-16,Y
+ 270:  00 
+ 271:  18 09 50 10     movb    1000 <cat2\+0xff1>, \-16,Y
+ 275:  00 
+ 276:  18 09 50 10     movb    1000 <cat2\+0xff1>, \-16,Y
+ 27a:  00 
+ 27b:  86 2b[ ]+       ldaa    #43
+ 27d:  18 0d 50 10     movb    \-16,Y, 1000 <cat2\+0xff1>
+ 281:  00 
+ 282:  18 0d 50 10     movb    \-16,Y, 1000 <cat2\+0xff1>
+ 286:  00 
+ 287:  18 0d 50 10     movb    \-16,Y, 1000 <cat2\+0xff1>
+ 28b:  00 
+ 28c:  86 2c[ ]+       ldaa    #44
+ 28e:  18 01 4f 10     movw    1002 <cat2\+0xff3>, 15,Y
+ 292:  02 
+ 293:  18 01 4f 10     movw    1002 <cat2\+0xff3>, 15,Y
+ 297:  02 
+ 298:  18 01 4f 10     movw    1002 <cat2\+0xff3>, 15,Y
+ 29c:  02 
+ 29d:  86 2d[ ]+       ldaa    #45
+ 29f:  18 05 4f 10     movw    15,Y, 1002 <cat2\+0xff3>
+ 2a3:  02 
+ 2a4:  18 05 4f 10     movw    15,Y, 1002 <cat2\+0xff3>
+ 2a8:  02 
+ 2a9:  18 05 4f 10     movw    15,Y, 1002 <cat2\+0xff3>
+ 2ad:  02 
+ 2ae:  86 2e[ ]+       ldaa    #46
+ 2b0:  18 01 50 10     movw    1002 <cat2\+0xff3>, \-16,Y
+ 2b4:  02 
+ 2b5:  18 01 50 10     movw    1002 <cat2\+0xff3>, \-16,Y
+ 2b9:  02 
+ 2ba:  18 01 50 10     movw    1002 <cat2\+0xff3>, \-16,Y
+ 2be:  02 
+ 2bf:  86 2f[ ]+       ldaa    #47
+ 2c1:  18 05 50 10     movw    \-16,Y, 1002 <cat2\+0xff3>
+ 2c5:  02 
+ 2c6:  18 05 50 10     movw    \-16,Y, 1002 <cat2\+0xff3>
+ 2ca:  02 
+ 2cb:  18 05 50 10     movw    \-16,Y, 1002 <cat2\+0xff3>
+ 2cf:  02 
+ 2d0:  86 30[ ]+       ldaa    #48
+ 2d2:  18 09 cf 10     movb    1000 <cat2\+0xff1>, 15,PC \{2e4 <cat2\+0x2d5>\}
+ 2d6:  00 
+ 2d7:  18 09 cf 10     movb    1000 <cat2\+0xff1>, 15,PC \{2e9 <cat2\+0x2da>\}
+ 2db:  00 
+ 2dc:  18 09 cf 10     movb    1000 <cat2\+0xff1>, 15,PC \{2ee <cat2\+0x2df>\}
+ 2e0:  00 
+ 2e1:  86 31[ ]+       ldaa    #49
+ 2e3:  18 0d cf 10     movb    15,PC \{2f5 <cat2\+0x2e6>\}, 1000 <cat2\+0xff1>
+ 2e7:  00 
+ 2e8:  18 0d cf 10     movb    15,PC \{2fa <cat2\+0x2eb>\}, 1000 <cat2\+0xff1>
+ 2ec:  00 
+ 2ed:  18 0d cf 10     movb    15,PC \{2ff <cat2\+0x2f0>\}, 1000 <cat2\+0xff1>
+ 2f1:  00 
+ 2f2:  86 32[ ]+       ldaa    #50
+ 2f4:  18 09 d0 10     movb    1000 <cat2\+0xff1>, \-16,PC \{2e7 <cat2\+0x2d8>\}
+ 2f8:  00 
+ 2f9:  18 09 d0 10     movb    1000 <cat2\+0xff1>, \-16,PC \{2ec <cat2\+0x2dd>\}
+ 2fd:  00 
+ 2fe:  18 09 d0 10     movb    1000 <cat2\+0xff1>, \-16,PC \{2f1 <cat2\+0x2e2>\}
+ 302:  00 
+ 303:  86 33[ ]+       ldaa    #51
+ 305:  18 0d d0 10     movb    \-16,PC \{2f8 <cat2\+0x2e9>\}, 1000 <cat2\+0xff1>
+ 309:  00 
+ 30a:  18 0d d0 10     movb    \-16,PC \{2fd <cat2\+0x2ee>\}, 1000 <cat2\+0xff1>
+ 30e:  00 
+ 30f:  18 0d d0 10     movb    \-16,PC \{302 <cat2\+0x2f3>\}, 1000 <cat2\+0xff1>
+ 313:  00 
+ 314:  86 34[ ]+       ldaa    #52
+ 316:  18 01 cf 10     movw    1002 <cat2\+0xff3>, 15,PC \{328 <cat2\+0x319>\}
+ 31a:  02 
+ 31b:  18 01 cf 10     movw    1002 <cat2\+0xff3>, 15,PC \{32d <cat2\+0x31e>\}
+ 31f:  02 
+ 320:  18 01 cf 10     movw    1002 <cat2\+0xff3>, 15,PC \{332 <cat2\+0x323>\}
+ 324:  02 
+ 325:  86 35[ ]+       ldaa    #53
+ 327:  18 05 cf 10     movw    15,PC \{339 <cat2\+0x32a>\}, 1002 <cat2\+0xff3>
+ 32b:  02 
+ 32c:  18 05 cf 10     movw    15,PC \{33e <cat2\+0x32f>\}, 1002 <cat2\+0xff3>
+ 330:  02 
+ 331:  18 05 cf 10     movw    15,PC \{343 <cat2\+0x334>\}, 1002 <cat2\+0xff3>
+ 335:  02 
+ 336:  86 36[ ]+       ldaa    #54
+ 338:  18 01 d0 10     movw    1002 <cat2\+0xff3>, \-16,PC \{32b <cat2\+0x31c>\}
+ 33c:  02 
+ 33d:  18 01 d0 10     movw    1002 <cat2\+0xff3>, \-16,PC \{330 <cat2\+0x321>\}
+ 341:  02 
+ 342:  18 01 d0 10     movw    1002 <cat2\+0xff3>, \-16,PC \{335 <cat2\+0x326>\}
+ 346:  02 
+ 347:  86 37[ ]+       ldaa    #55
+ 349:  18 05 d0 10     movw    \-16,PC \{33c <cat2\+0x32d>\}, 1002 <cat2\+0xff3>
+ 34d:  02 
+ 34e:  18 05 d0 10     movw    \-16,PC \{341 <cat2\+0x332>\}, 1002 <cat2\+0xff3>
+ 352:  02 
+ 353:  18 05 d0 10     movw    \-16,PC \{346 <cat2\+0x337>\}, 1002 <cat2\+0xff3>
+ 357:  02 
+ 358:  86 38[ ]+       ldaa    #56
+ 35a:  18 09 8f 10     movb    1000 <cat2\+0xff1>, 15,SP
+ 35e:  00 
+ 35f:  18 09 8f 10     movb    1000 <cat2\+0xff1>, 15,SP
+ 363:  00 
+ 364:  18 09 8f 10     movb    1000 <cat2\+0xff1>, 15,SP
+ 368:  00 
+ 369:  86 39[ ]+       ldaa    #57
+ 36b:  18 0d 8f 10     movb    15,SP, 1000 <cat2\+0xff1>
+ 36f:  00 
+ 370:  18 0d 8f 10     movb    15,SP, 1000 <cat2\+0xff1>
+ 374:  00 
+ 375:  18 0d 8f 10     movb    15,SP, 1000 <cat2\+0xff1>
+ 379:  00 
+ 37a:  86 3a[ ]+       ldaa    #58
+ 37c:  18 09 90 10     movb    1000 <cat2\+0xff1>, \-16,SP
+ 380:  00 
+ 381:  18 09 90 10     movb    1000 <cat2\+0xff1>, \-16,SP
+ 385:  00 
+ 386:  18 09 90 10     movb    1000 <cat2\+0xff1>, \-16,SP
+ 38a:  00 
+ 38b:  86 3b[ ]+       ldaa    #59
+ 38d:  18 0d 90 10     movb    \-16,SP, 1000 <cat2\+0xff1>
+ 391:  00 
+ 392:  18 0d 90 10     movb    \-16,SP, 1000 <cat2\+0xff1>
+ 396:  00 
+ 397:  18 0d 90 10     movb    \-16,SP, 1000 <cat2\+0xff1>
+ 39b:  00 
+ 39c:  86 3c[ ]+       ldaa    #60
+ 39e:  18 01 8f 10     movw    1002 <cat2\+0xff3>, 15,SP
+ 3a2:  02 
+ 3a3:  18 01 8f 10     movw    1002 <cat2\+0xff3>, 15,SP
+ 3a7:  02 
+ 3a8:  18 01 8f 10     movw    1002 <cat2\+0xff3>, 15,SP
+ 3ac:  02 
+ 3ad:  86 3d[ ]+       ldaa    #61
+ 3af:  18 05 8f 10     movw    15,SP, 1002 <cat2\+0xff3>
+ 3b3:  02 
+ 3b4:  18 05 8f 10     movw    15,SP, 1002 <cat2\+0xff3>
+ 3b8:  02 
+ 3b9:  18 05 8f 10     movw    15,SP, 1002 <cat2\+0xff3>
+ 3bd:  02 
+ 3be:  86 3e[ ]+       ldaa    #62
+ 3c0:  18 01 90 10     movw    1002 <cat2\+0xff3>, \-16,SP
+ 3c4:  02 
+ 3c5:  18 01 90 10     movw    1002 <cat2\+0xff3>, \-16,SP
+ 3c9:  02 
+ 3ca:  18 01 90 10     movw    1002 <cat2\+0xff3>, \-16,SP
+ 3ce:  02 
+ 3cf:  86 3f[ ]+       ldaa    #63
+ 3d1:  18 05 90 10     movw    \-16,SP, 1002 <cat2\+0xff3>
+ 3d5:  02 
+ 3d6:  18 05 90 10     movw    \-16,SP, 1002 <cat2\+0xff3>
+ 3da:  02 
+ 3db:  18 05 90 10     movw    \-16,SP, 1002 <cat2\+0xff3>
+ 3df:  02 
+ 3e0:  86 40[ ]+       ldaa    #64
+ 3e2:  18 08 07 aa     movb    #170, 7,X
+ 3e6:  18 08 07 aa     movb    #170, 7,X
+ 3ea:  18 08 07 aa     movb    #170, 7,X
+ 3ee:  86 41[ ]+       ldaa    #65
+ 3f0:  18 08 18 aa     movb    #170, \-8,X
+ 3f4:  18 08 18 aa     movb    #170, \-8,X
+ 3f8:  18 08 18 aa     movb    #170, \-8,X
+ 3fc:  86 42[ ]+       ldaa    #66
+ 3fe:  18 00 07 00     movw    #44 <cat2\+0x35>, 7,X
+ 402:  44 
+ 403:  18 00 07 00     movw    #44 <cat2\+0x35>, 7,X
+ 407:  44 
+ 408:  18 00 07 00     movw    #44 <cat2\+0x35>, 7,X
+ 40c:  44 
+ 40d:  86 43[ ]+       ldaa    #67
+ 40f:  18 00 18 00     movw    #44 <cat2\+0x35>, \-8,X
+ 413:  44 
+ 414:  18 00 18 00     movw    #44 <cat2\+0x35>, \-8,X
+ 418:  44 
+ 419:  18 00 18 00     movw    #44 <cat2\+0x35>, \-8,X
+ 41d:  44 
+ 41e:  86 44[ ]+       ldaa    #68
+ 420:  18 08 47 aa     movb    #170, 7,Y
+ 424:  18 08 47 aa     movb    #170, 7,Y
+ 428:  18 08 47 aa     movb    #170, 7,Y
+ 42c:  86 45[ ]+       ldaa    #69
+ 42e:  18 08 58 aa     movb    #170, \-8,Y
+ 432:  18 08 58 aa     movb    #170, \-8,Y
+ 436:  18 08 58 aa     movb    #170, \-8,Y
+ 43a:  86 46[ ]+       ldaa    #70
+ 43c:  18 00 47 00     movw    #44 <cat2\+0x35>, 7,Y
+ 440:  44 
+ 441:  18 00 47 00     movw    #44 <cat2\+0x35>, 7,Y
+ 445:  44 
+ 446:  18 00 47 00     movw    #44 <cat2\+0x35>, 7,Y
+ 44a:  44 
+ 44b:  86 47[ ]+       ldaa    #71
+ 44d:  18 00 58 00     movw    #44 <cat2\+0x35>, \-8,Y
+ 451:  44 
+ 452:  18 00 58 00     movw    #44 <cat2\+0x35>, \-8,Y
+ 456:  44 
+ 457:  18 00 58 00     movw    #44 <cat2\+0x35>, \-8,Y
+ 45b:  44 
+ 45c:  86 48[ ]+       ldaa    #72
+ 45e:  18 08 c7 aa     movb    #170, 7,PC \{468 <cat2\+0x459>\}
+ 462:  18 08 c7 aa     movb    #170, 7,PC \{46c <cat2\+0x45d>\}
+ 466:  18 08 c7 aa     movb    #170, 7,PC \{470 <cat2\+0x461>\}
+ 46a:  86 49[ ]+       ldaa    #73
+ 46c:  18 08 d8 aa     movb    #170, \-8,PC \{467 <cat2\+0x458>\}
+ 470:  18 08 d8 aa     movb    #170, \-8,PC \{46b <cat2\+0x45c>\}
+ 474:  18 08 d8 aa     movb    #170, \-8,PC \{46f <cat2\+0x460>\}
+ 478:  86 4a[ ]+       ldaa    #74
+ 47a:  18 00 c7 00     movw    #44 <cat2\+0x35>, 7,PC \{484 <cat2\+0x475>\}
+ 47e:  44 
+ 47f:  18 00 c7 00     movw    #44 <cat2\+0x35>, 7,PC \{489 <cat2\+0x47a>\}
+ 483:  44 
+ 484:  18 00 c7 00     movw    #44 <cat2\+0x35>, 7,PC \{48e <cat2\+0x47f>\}
+ 488:  44 
+ 489:  86 4b[ ]+       ldaa    #75
+ 48b:  18 00 d8 00     movw    #44 <cat2\+0x35>, \-8,PC \{486 <cat2\+0x477>\}
+ 48f:  44 
+ 490:  18 00 d8 00     movw    #44 <cat2\+0x35>, \-8,PC \{48b <cat2\+0x47c>\}
+ 494:  44 
+ 495:  18 00 d8 00     movw    #44 <cat2\+0x35>, \-8,PC \{490 <cat2\+0x481>\}
+ 499:  44 
+ 49a:  86 4c[ ]+       ldaa    #76
+ 49c:  18 08 87 aa     movb    #170, 7,SP
+ 4a0:  18 08 87 aa     movb    #170, 7,SP
+ 4a4:  18 08 87 aa     movb    #170, 7,SP
+ 4a8:  86 4d[ ]+       ldaa    #77
+ 4aa:  18 08 98 aa     movb    #170, \-8,SP
+ 4ae:  18 08 98 aa     movb    #170, \-8,SP
+ 4b2:  18 08 98 aa     movb    #170, \-8,SP
+ 4b6:  86 4e[ ]+       ldaa    #78
+ 4b8:  18 00 87 00     movw    #44 <cat2\+0x35>, 7,SP
+ 4bc:  44 
+ 4bd:  18 00 87 00     movw    #44 <cat2\+0x35>, 7,SP
+ 4c1:  44 
+ 4c2:  18 00 87 00     movw    #44 <cat2\+0x35>, 7,SP
+ 4c6:  44 
+ 4c7:  86 4f[ ]+       ldaa    #79
+ 4c9:  18 00 98 00     movw    #44 <cat2\+0x35>, \-8,SP
+ 4cd:  44 
+ 4ce:  18 00 98 00     movw    #44 <cat2\+0x35>, \-8,SP
+ 4d2:  44 
+ 4d3:  18 00 98 00     movw    #44 <cat2\+0x35>, \-8,SP
+ 4d7:  44 
+ 4d8:  86 50[ ]+       ldaa    #80
+
diff --git a/gas/testsuite/gas/m68hc11/movb.s b/gas/testsuite/gas/m68hc11/movb.s
new file mode 100644 (file)
index 0000000..c9aae0f
--- /dev/null
@@ -0,0 +1,333 @@
+       dog2=15
+       dog3=-16
+       dog4=7
+       dog5=-8
+       ;; idx - idx
+       ldaa #0
+       movb 15,x,dog2,x
+       movb 15,x,cat2,x
+       movb 15,x,15,x
+       ldaa #1
+       movb dog2,x,15,x
+       movb cat2,x,15,x
+       movb 15,x,15,x
+       ldaa #2
+       movb 15,x,dog3,x
+       movb 15,x,cat3,x        
+       movb 15,x,-16,x
+       ldaa #3         
+       movb dog3,x,15,x
+       movb cat3,x,15,x        
+       movb -16,x,15,x
+       ldaa #4
+       movw 15,x,dog2,x
+       movw 15,x,cat2,x
+       movw 15,x,15,x
+       ldaa #5
+       movw dog2,x,15,x
+       movw cat2,x,15,x
+       movw 15,x,15,x
+       ldaa #6
+       movw 15,x,dog3,x
+       movw 15,x,cat3,x
+       movw 15,x,-16,x
+       ldaa #7
+       movw dog3,x,15,x
+       movw cat3,x,15,x
+       movw -16,x,15,x
+       ldaa #8
+       movb 15,y,dog2,y
+       movb 15,y,cat2,y
+       movb 15,y,15,y
+       ldaa #9
+       movb dog2,y,15,y
+       movb cat2,y,15,y
+       movb 15,y,15,y
+       ldaa #10
+       movb 15,y,dog3,y
+       movb 15,y,cat3,y
+       movb 15,y,-16,y
+       ldaa #11
+       movb dog3,y,15,y
+       movb cat3,y,15,y
+       movb -16,y,15,y
+       ldaa #12
+       movw 15,y,dog2,y
+       movw 15,y,cat2,y
+       movw 15,y,15,y
+       ldaa #13
+       movw dog2,y,15,y
+       movw cat2,y,15,y
+       movw 15,y,15,y
+       ldaa #14
+       movw 15,y,dog3,y
+       movw 15,y,cat3,y
+       movw 15,y,-16,y
+       ldaa #15
+       movw dog3,y,15,y
+       movw cat3,y,15,y
+       movw -16,y,15,y
+       ldaa #16
+       movb 15,y,dog2,pc
+       movb 15,y,cat2,pc
+       movb 15,y,15,pc
+       ldaa #17
+       movb dog2,y,15,pc
+       movb cat2,y,15,pc
+       movb 15,y,15,pc
+       ldaa #18
+       movb 15,y,dog3,pc
+       movb 15,y,cat3,pc
+       movb 15,y,-16,pc
+       ldaa #19
+       movb dog3,y,15,pc
+       movb cat3,y,15,pc
+       movb -16,y,15,pc
+       ldaa #20
+       movw 15,y,dog2,pc
+       movw 15,y,cat2,pc
+       movw 15,y,15,pc
+       ldaa #21
+       movw dog2,y,15,pc
+       movw cat2,y,15,pc
+       movw 15,y,15,pc
+       ldaa #22
+       movw 15,y,dog3,pc
+       movw 15,y,cat3,pc
+       movw 15,y,-16,pc
+       ldaa #23
+       movw dog3,y,15,pc
+       movw cat3,y,15,pc
+       movw -16,y,15,pc
+       ldaa #24
+       movb 15,sp,dog2,pc
+       movb 15,sp,cat2,pc
+       movb 15,sp,15,pc
+       ldaa #25
+       movb dog2,sp,15,pc
+       movb cat2,sp,15,pc
+       movb 15,sp,15,pc
+       ldaa #26
+       movb 15,sp,dog3,pc
+       movb 15,sp,cat3,pc
+       movb 15,sp,-16,pc
+       ldaa #27
+       movb dog3,sp,15,pc
+       movb cat3,sp,15,pc
+       movb -16,sp,15,pc
+       ldaa #28
+       movw 15,sp,dog2,pc
+       movw 15,sp,cat2,pc
+       movw 15,sp,15,pc
+       ldaa #29
+       movw dog2,sp,15,pc
+       movw cat2,sp,15,pc
+       movw 15,sp,15,pc
+       ldaa #30
+       movw 15,sp,dog3,pc
+       movw 15,sp,cat3,pc
+       movw 15,sp,-16,pc
+       ldaa #31
+       movw dog3,sp,15,pc
+       movw cat3,sp,15,pc
+       movw -16,sp,15,pc
+       ldaa #32
+       ;; ext - idx
+       ;; idx - ext
+       movb 0x1000,dog2,x
+       movb 0x1000,cat2,x
+       movb 0x1000,15,x
+       ldaa #33
+       movb dog2,x,0x1000
+       movb cat2,x,0x1000
+       movb 15,x,0x1000
+       ldaa #34
+       movb 0x1000,dog3,x
+       movb 0x1000,cat3,x
+       movb 0x1000,-16,x
+       ldaa #35
+       movb dog3,x,0x1000
+       movb cat3,x,0x1000
+       movb -16,x,0x1000
+       ldaa #36
+       movw 0x1002,dog2,x
+       movw 0x1002,cat2,x
+       movw 0x1002,15,x
+       ldaa #37
+       movw dog2,x,0x1002
+       movw cat2,x,0x1002
+       movw 15,x,0x1002
+       ldaa #38
+       movw 0x1002,dog3,x
+       movw 0x1002,cat3,x
+       movw 0x1002,-16,x
+       ldaa #39
+       movw dog3,x,0x1002
+       movw cat3,x,0x1002
+       movw -16,x,0x1002
+       ldaa #40
+       movb 0x1000,dog2,y
+       movb 0x1000,cat2,y
+       movb 0x1000,15,y
+       ldaa #41
+       movb dog2,y,0x1000
+       movb cat2,y,0x1000
+       movb 15,y,0x1000
+       ldaa #42
+       movb 0x1000,dog3,y
+       movb 0x1000,cat3,y
+       movb 0x1000,-16,y
+       ldaa #43
+       movb dog3,y,0x1000
+       movb cat3,y,0x1000
+       movb -16,y,0x1000
+       ldaa #44
+       movw 0x1002,dog2,y
+       movw 0x1002,cat2,y
+       movw 0x1002,15,y
+       ldaa #45
+       movw dog2,y,0x1002
+       movw cat2,y,0x1002
+       movw 15,y,0x1002
+       ldaa #46
+       movw 0x1002,dog3,y
+       movw 0x1002,cat3,y
+       movw 0x1002,-16,y
+       ldaa #47
+       movw dog3,y,0x1002
+       movw cat3,y,0x1002
+       movw -16,y,0x1002
+       ldaa #48
+       movb 0x1000,dog2,pc
+       movb 0x1000,cat2,pc
+       movb 0x1000,15,pc
+       ldaa #49
+       movb dog2,pc,0x1000
+       movb cat2,pc,0x1000
+       movb 15,pc,0x1000
+       ldaa #50
+       movb 0x1000,dog3,pc
+       movb 0x1000,cat3,pc
+       movb 0x1000,-16,pc
+       ldaa #51
+       movb dog3,pc,0x1000
+       movb cat3,pc,0x1000
+       movb -16,pc,0x1000
+       ldaa #52
+       movw 0x1002,dog2,pc
+       movw 0x1002,cat2,pc
+       movw 0x1002,15,pc
+       ldaa #53
+       movw dog2,pc,0x1002
+       movw cat2,pc,0x1002
+       movw 15,pc,0x1002
+       ldaa #54
+       movw 0x1002,dog3,pc
+       movw 0x1002,cat3,pc
+       movw 0x1002,-16,pc
+       ldaa #55
+       movw dog3,pc,0x1002
+       movw cat3,pc,0x1002
+       movw -16,pc,0x1002
+       ldaa #56
+       movb 0x1000,dog2,sp
+       movb 0x1000,cat2,sp
+       movb 0x1000,15,sp
+       ldaa #57
+       movb dog2,sp,0x1000
+       movb cat2,sp,0x1000
+       movb 15,sp,0x1000
+       ldaa #58
+       movb 0x1000,dog3,sp
+       movb 0x1000,cat3,sp
+       movb 0x1000,-16,sp
+       ldaa #59
+       movb dog3,sp,0x1000
+       movb cat3,sp,0x1000
+       movb -16,sp,0x1000
+       ldaa #60
+       movw 0x1002,dog2,sp
+       movw 0x1002,cat2,sp
+       movw 0x1002,15,sp
+       ldaa #61
+       movw dog2,sp,0x1002
+       movw cat2,sp,0x1002
+       movw 15,sp,0x1002
+       ldaa #62
+       movw 0x1002,dog3,sp
+       movw 0x1002,cat3,sp
+       movw 0x1002,-16,sp
+       ldaa #63
+       movw dog3,sp,0x1002
+       movw cat3,sp,0x1002
+       movw -16,sp,0x1002
+       ldaa #64
+       ;; imm - idx
+       movb #0xaa,dog4,x
+       movb #0xaa,cat4,x
+       movb #0xaa,7,x
+       ldaa #65
+       movb #0xaa,dog5,x
+       movb #0xaa,cat5,x
+       movb #0xaa,-8,x
+       ldaa #66
+       movw #0x44,dog4,x
+       movw #0x44,cat4,x
+       movw #0x44,7,x
+       ldaa #67
+       movw #0x44,dog5,x
+       movw #0x44,cat5,x
+       movw #0x44,-8,x
+       ldaa #68
+       movb #0xaa,dog4,y
+       movb #0xaa,cat4,y
+       movb #0xaa,7,y
+       ldaa #69
+       movb #0xaa,dog5,y
+       movb #0xaa,cat5,y
+       movb #0xaa,-8,y
+       ldaa #70
+       movw #0x44,dog4,y
+       movw #0x44,cat4,y
+       movw #0x44,7,y
+       ldaa #71
+       movw #0x44,dog5,y
+       movw #0x44,cat5,y
+       movw #0x44,-8,y
+       ldaa #72
+       movb #0xaa,dog4,pc
+       movb #0xaa,cat4,pc
+       movb #0xaa,7,pc
+       ldaa #73
+       movb #0xaa,dog5,pc
+       movb #0xaa,cat5,pc
+       movb #0xaa,-8,pc
+       ldaa #74
+       movw #0x44,dog4,pc
+       movw #0x44,cat4,pc
+       movw #0x44,7,pc
+       ldaa #75
+       movw #0x44,dog5,pc
+       movw #0x44,cat5,pc
+       movw #0x44,-8,pc
+       ldaa #76
+       movb #0xaa,dog4,sp
+       movb #0xaa,cat4,sp
+       movb #0xaa,7,sp
+       ldaa #77
+       movb #0xaa,dog5,sp
+       movb #0xaa,cat5,sp
+       movb #0xaa,-8,sp
+       ldaa #78
+       movw #0x44,dog4,sp
+       movw #0x44,cat4,sp
+       movw #0x44,7,sp
+       ldaa #79
+       movw #0x44,dog5,sp
+       movw #0x44,cat5,sp
+       movw #0x44,-8,sp
+       ldaa #80
+       cat2=15
+       cat3=-16
+       cat4=7
+       cat5=-8