Fix the MSP430 assembler's parsing of register names.
authorNick Clifton <nickc@redhat.com>
Tue, 26 Jun 2018 12:40:13 +0000 (13:40 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 26 Jun 2018 12:40:13 +0000 (13:40 +0100)
PR 23335
* config/tc-msp430.c (check_reg): Only accept register name
strings that do not end in an alphanumeric character.
* testsuite/gas/msp430/msp430x.d: Update expected disassembly.

gas/ChangeLog
gas/config/tc-msp430.c
gas/testsuite/gas/msp430/msp430x.d

index 4665eefadf5afb44f8e5e1bd3b866ffa7097d029..41a443005df34aa5277fcc09905aab55da7b89be 100644 (file)
@@ -1,3 +1,10 @@
+2018-06-26  Nick Clifton  <nickc@redhat.com>
+
+       PR 23335
+       * config/tc-msp430.c (check_reg): Only accept register name
+       strings that do not end in an alphanumeric character.
+       * testsuite/gas/msp430/msp430x.d: Update expected disassembly.
+
 2018-06-24  Nick Clifton  <nickc@redhat.com>
 
        * configure: Regenerate.
index 3227287063121a402869e2d13f0219f68e806289..bebae6edfaf744ad2b446785baaebde2eee76b66 100644 (file)
@@ -1672,6 +1672,12 @@ md_begin (void)
   linkrelax = 1;
 }
 
+static inline bfd_boolean
+is_regname_end (char c)
+{
+  return (c == 0 || ! ISALNUM (c));
+}
+  
 /* Returns the register number equivalent to the string T.
    Returns -1 if there is no such register.
    Skips a leading 'r' or 'R' character if there is one.
@@ -1680,32 +1686,36 @@ md_begin (void)
 static signed int
 check_reg (char * t)
 {
-  signed int val;
+  char * endt;
+  signed long int val;
 
-  if (t == NULL)
+  if (t == NULL || t[0] == 0)
     return -1;
 
   if (*t == 'r' || *t == 'R')
     ++t;
 
-  if (strncasecmp (t, "pc", 2) == 0)
+  if (strncasecmp (t, "pc", 2) == 0 && is_regname_end (t[2]))
     return 0;
 
-  if (strncasecmp (t, "sp", 2) == 0)
+  if (strncasecmp (t, "sp", 2) == 0 && is_regname_end (t[2]))
     return 1;
 
-  if (strncasecmp (t, "sr", 2) == 0)
+  if (strncasecmp (t, "sr", 2) == 0 && is_regname_end (t[2]))
     return 2;
 
-  if (*t == '0')
+  if (*t == '0' && is_regname_end (t[1]))
     return 0;
 
-  val = atoi (t);
+  val = strtol (t, & endt, 0);
 
   if (val < 1 || val > 15)
     return -1;
 
-  return val;
+  if (is_regname_end (*endt))
+    return val;
+
+  return -1;
 }
 
 static int
index 8eea453e2983a72a14d48a31465154584f6b05ad..ecaef8fd6a42d9523df33e1e9f05beeb3ba7a961 100644 (file)
@@ -105,128 +105,128 @@ Disassembly of section .text:
 0+021a <[^>]*> 40 1d b0 40 de bc 00 00         movx.w  #-344866,0x00000        ;0xabcde, PC rel. 0x00220
 0+0222 <[^>]*> 40 18 90 40 00 00 00 00         movx.w  0x00000,0x00000 ;PC rel. 0x00226, PC rel. 0x00228
 0+022a <[^>]*> 40 18 0f 73     sbcx.w  r15             ;
-0+022e <[^>]*> 00 18 40 73     sbcx.a  r0              ;
-0+0232 <[^>]*> 40 18 4f 73     sbcx.b  r15             ;
-0+0236 <[^>]*> 40 18 87 73 00 00       sbcx.w  0\(r7\)         ;
-0+023c <[^>]*> 40 18 0f 7f     subcx.w r15,    r15     ;
-0+0240 <[^>]*> 80 18 7f 70 45 23       subcx.a #74565, r15     ;0x12345
-0+0246 <[^>]*> 40 18 4f 7f     subcx.b r15,    r15     ;
-0+024a <[^>]*> 40 18 b7 75 00 00       subcx.w @r5\+,  0\(r7\) ;
-0+0250 <[^>]*> 40 18 10 86 02 00       subx.w  2\(r6\),        r0      ;
-0+0256 <[^>]*> 00 18 f0 80 67 11 00 00         subx.a  #4455,  0x00000 ;0x01167, PC rel. 0x0025c
-0+025e <[^>]*> 40 18 50 86 02 00       subx.b  2\(r6\),        r0      ;
-0+0264 <[^>]*> 40 18 10 86 02 00       subx.w  2\(r6\),        r0      ;
-0+026a <[^>]*> 40 18 80 93 00 00       cmpx.w  #0,     0x00000 ;r3 As==00, PC rel. 0x0026e
-0+0270 <[^>]*> 00 18 c0 93 00 00       cmpx.a  #0,     0x00000 ;r3 As==00, PC rel. 0x00274
-0+0276 <[^>]*> 40 18 c0 93 00 00       cmpx.b  #0,     0x00000 ;r3 As==00, PC rel. 0x0027a
-0+027c <[^>]*> 40 18 80 93 00 00       cmpx.w  #0,     0x00000 ;r3 As==00, PC rel. 0x00280
-0+0282 <[^>]*> 40 18 b0 e0 5a 5a 00 00         xorx.w  #23130, 0x00000 ;0x05a5a, PC rel. 0x00288
-0+028a <[^>]*> 40 18 90 e2 00 00 00 00         xorx.w  &0x00000,0x00000        ; PC rel. 0x00290
-0+0292 <[^>]*> 40 18 a0 e8 00 00       xorx.w  @r8,    0x00000 ; PC rel. 0x00296
-0+0298 <[^>]*> 40 18 80 e8 00 00       xorx.w  r8,     0x00000 ; PC rel. 0x0029c
-0+029e <[^>]*> 40 18 d0 e6 02 00 00 00         xorx.b  2\(r6\),        0x00000 ; PC rel. 0x002a4
-0+02a6 <[^>]*> 40 18 f0 e8 00 00       xorx.b  @r8\+,  0x00000 ; PC rel. 0x002aa
-0+02ac <[^>]*> 00 18 d2 e0 00 00 00 00         xorx.a  0x00000,&0x00000;PC rel. 0x002b0
-0+02b4 <[^>]*> 40 18 26 e5     xorx.w  @r5,    r6      ;
-0+02b8 <[^>]*> 04 18 ff e0 39 30 78 56         xorx.a  #12345, 284280\(r15\);0x03039, 0x45678
-0+02c0 <[^>]*> a7 01 45 23     adda    #74565, r7      ;0x12345
-0+02c4 <[^>]*> ee 06           adda    r6,     r14     ;
-0+02c6 <[^>]*> 80 00 00 00     mova    #0,     r0      ;
-0+02ca <[^>]*> 80 01 44 10     mova    #69700, r0      ;0x11044
-0+02ce <[^>]*> c0 05           mova    r5,     r0      ;
-0+02d0 <[^>]*> 20 00 00 00     bra     &0              ;
-0+02d4 <[^>]*> 00 05           bra     @r5             ;
-0+02d6 <[^>]*> 10 05           bra     @r5\+           ;
-0+02d8 <[^>]*> 30 05 76 98     bra     -26506\(r5\)    ;0xffff9876
-0+02dc <[^>]*> 45 13           calla   r5              ;
-0+02de <[^>]*> 56 13 00 00     calla   0\(r6\)         ;0x00000
-0+02e2 <[^>]*> 67 13           calla   @r7             ;
-0+02e4 <[^>]*> 78 13           calla   @r8\+           ;
-0+02e6 <[^>]*> 80 13 00 00     calla   &0              ;0x00000
-0+02ea <[^>]*> 90 13 00 00     calla   0\(PC\)         ;PC rel. 0x002ec
-0+02ee <[^>]*> b0 13 00 00     calla   #0              ;0x00000
-0+02f2 <[^>]*> 40 18 06 43     clrx.w  r6              ;
-0+02f6 <[^>]*> d2 01           cmpa    r1,     r2      ;
-0+02f8 <[^>]*> 93 0f cb ed     cmpa    #1043915,r3     ;0xfedcb
-0+02fc <[^>]*> 40 18 25 83     decdx.w r5              ;
-0+0300 <[^>]*> 40 18 25 53     incdx.w r5              ;
-0+0304 <[^>]*> c8 09           mova    r9,     r8      ;
-0+0306 <[^>]*> 8c 01 45 23     mova    #74565, r12     ;0x12345
-0+030a <[^>]*> 38 09 00 01     mova    256\(r9\),r8    ;0x00100
-0+030e <[^>]*> 2c 00 00 00     mova    &0,     r12     ;
-0+0312 <[^>]*> 08 09           mova    @r9,    r8      ;
-0+0314 <[^>]*> 18 09           mova    @r9\+,  r8      ;
-0+0316 <[^>]*> 79 08 00 01     mova    r8,     256\(r9\)       ; 0x00100
-0+031a <[^>]*> 60 0d 00 00     mova    r13,    &0      ;
-0+031e <[^>]*> 10 01           reta                    ;
-0+0320 <[^>]*> 00 13           reti                    
-0+0322 <[^>]*> f6 05           suba    r5,     r6      ;
-0+0324 <[^>]*> b6 0f ff ff     suba    #1048575,r6     ;0xfffff
-0+0328 <[^>]*> 40 18 80 93 00 00       cmpx.w  #0,     0x00000 ;r3 As==00, PC rel. 0x0032c
-0+032e <[^>]*> 05 17           popm    #1,     r5      ;16-bit words
-0+0330 <[^>]*> 2d 16           popm.a  #3,     r15     ;20-bit words
-0+0332 <[^>]*> 75 17           popm    #8,     r12     ;16-bit words
-0+0334 <[^>]*> 40 18 3a 41     popx.w  r10             ;
-0+0338 <[^>]*> 00 18 7a 41     popx.a  r10             ;
-0+033c <[^>]*> 40 18 7a 41     popx.b  r10             ;
-0+0340 <[^>]*> 40 18 3a 41     popx.w  r10             ;
-0+0344 <[^>]*> 09 15           pushm   #1,     r9      ;16-bit words
-0+0346 <[^>]*> 19 14           pushm.a #2,     r9      ;20-bit words
-0+0348 <[^>]*> 29 15           pushm   #3,     r9      ;16-bit words
-0+034a <[^>]*> 40 18 08 12     pushx.w r8              ;
-0+034e <[^>]*> 00 18 48 12     pushx.a r8              ;
-0+0352 <[^>]*> 40 18 52 12 00 00       pushx.b &0x0000         ;
-0+0358 <[^>]*> 40 18 08 12     pushx.w r8              ;
-0+035c <[^>]*> 5f 02           rlam    #1,     r15     ;
-0+035e <[^>]*> 4f 06           rlam.a  #2,     r15     ;
-0+0360 <[^>]*> 5f 0a           rlam    #3,     r15     ;
-0+0362 <[^>]*> 40 18 06 56     rlax.w  r6              ;
-0+0366 <[^>]*> 00 18 46 56     rlax.a  r6              ;
-0+036a <[^>]*> 40 18 06 56     rlax.w  r6              ;
-0+036e <[^>]*> 40 18 06 66     rlcx.w  r6              ;
-0+0372 <[^>]*> 00 18 46 66     rlcx.a  r6              ;
-0+0376 <[^>]*> 40 18 06 66     rlcx.w  r6              ;
-0+037a <[^>]*> 56 01           rram    #1,     r6      ;
-0+037c <[^>]*> 46 0d           rram.a  #4,     r6      ;
-0+037e <[^>]*> 56 05           rram    #2,     r6      ;
-0+0380 <[^>]*> 40 18 0b 11     rrax.w  r11             ;
-0+0384 <[^>]*> 00 18 4b 11     rrax.a  r11             ;
-0+0388 <[^>]*> 40 18 0b 11     rrax.w  r11             ;
-0+038c <[^>]*> 55 0c           rrcm    #4,     r5      ;
-0+038e <[^>]*> 45 00           rrcm.a  #1,     r5      ;
-0+0390 <[^>]*> 55 08           rrcm    #3,     r5      ;
-0+0392 <[^>]*> 40 18 0d 10     rrcx.w  r13             ;
-0+0396 <[^>]*> 00 18 4d 10     rrcx.a  r13             ;
-0+039a <[^>]*> 40 18 0d 10     rrcx.w  r13             ;
-0+039e <[^>]*> 54 0b           rrum    #3,     r4      ;
-0+03a0 <[^>]*> 44 07           rrum.a  #2,     r4      ;
-0+03a2 <[^>]*> 54 03           rrum    #1,     r4      ;
-0+03a4 <[^>]*> 40 19 04 10     rrux.w  r4              ;
-0+03a8 <[^>]*> 00 19 47 10     rrux.a  r7              ;
-0+03ac <[^>]*> 40 19 45 10     rrux.b  r5              ;
-0+03b0 <[^>]*> 40 19 06 10     rrux.w  r6              ;
-0+03b4 <[^>]*> 40 18 81 10     swpbx.w r1              ;
-0+03b8 <[^>]*> 00 18 90 10 00 00       swpbx.a 0x0000          ;PC rel. 0x03bc
-0+03be <[^>]*> 40 18 8c 10     swpbx.w r12             ;
-0+03c2 <[^>]*> 40 18 82 11     sxtx.w  r2              ;
-0+03c6 <[^>]*> 00 18 92 11 00 00       sxtx.a  &0x0000         ;
-0+03cc <[^>]*> 40 18 82 11     sxtx.w  r2              ;
-0+03d0 <[^>]*> 04 18 45 11     rpt #5 \{ rrax.a        r5              ;
-0+03d4 <[^>]*> 85 18 45 11     rpt r5 \{ rrax.a        r5              ;
-0+03d8 <[^>]*> e2 01           adda    r1,     r2      ;
-0+03da <[^>]*> c0 01           mova    r1,     r0      ;
-0+03dc <[^>]*> 41 13           calla   r1              ;
-0+03de <[^>]*> 40 18 01 43     clrx.w  r1              ;
-0+03e2 <[^>]*> d2 01           cmpa    r1,     r2      ;
-0+03e4 <[^>]*> 40 18 21 83     decdx.w r1              ;
-0+03e8 <[^>]*> 40 18 21 53     incdx.w r1              ;
-0+03ec <[^>]*> c2 01           mova    r1,     r2      ;
-0+03ee <[^>]*> 10 01           reta                    ;
-0+03f0 <[^>]*> f2 01           suba    r1,     r2      ;
-0+03f2 <[^>]*> 40 18 80 93 00 00       cmpx.w  #0,     0x00000 ;r3 As==00, PC rel. 0x003f6
-0+03f8 <[^>]*> c1 19 01 10     rpt r1 \{ rrux.w        r1              ;
-0+03fc <[^>]*> 41 18 02 10     rpt #2 \{ rrcx.w        r2              ;
-0+0400 <[^>]*> 42 18 47 11     rpt #3 \{ rrax.b        r7              ;
-0+0404 <[^>]*> 84 18 44 11     rpt r4 \{ rrax.a        r4              ;
-0+0408 <[^>]*> 44 18 45 55     rpt #5 \{ rlax.b        r5              ;
-0+040c <[^>]*> 05 18 46 66     rpt #6 \{ rlcx.a        r6              ;
+0+022e <[^>]*> 80 18 c0 73 45 23       sbcx.a  0x2345          ;PC rel. abs addr 0x2577
+0+0234 <[^>]*> 40 18 4f 73     sbcx.b  r15             ;
+0+0238 <[^>]*> 40 18 87 73 00 00       sbcx.w  0\(r7\)         ;
+0+023e <[^>]*> 40 18 0f 7f     subcx.w r15,    r15     ;
+0+0242 <[^>]*> 80 18 7f 70 45 23       subcx.a #74565, r15     ;0x12345
+0+0248 <[^>]*> 40 18 4f 7f     subcx.b r15,    r15     ;
+0+024c <[^>]*> 40 18 b7 75 00 00       subcx.w @r5\+,  0\(r7\) ;
+0+0252 <[^>]*> 40 18 10 86 02 00       subx.w  2\(r6\),        r0      ;
+0+0258 <[^>]*> 00 18 f0 80 67 11 00 00         subx.a  #4455,  0x00000 ;0x01167, PC rel. 0x0025e
+0+0260 <[^>]*> 40 18 50 86 02 00       subx.b  2\(r6\),        r0      ;
+0+0266 <[^>]*> 40 18 10 86 02 00       subx.w  2\(r6\),        r0      ;
+0+026c <[^>]*> 40 18 80 93 00 00       cmpx.w  #0,     0x00000 ;r3 As==00, PC rel. 0x00270
+0+0272 <[^>]*> 00 18 c0 93 00 00       cmpx.a  #0,     0x00000 ;r3 As==00, PC rel. 0x00276
+0+0278 <[^>]*> 40 18 c0 93 00 00       cmpx.b  #0,     0x00000 ;r3 As==00, PC rel. 0x0027c
+0+027e <[^>]*> 40 18 80 93 00 00       cmpx.w  #0,     0x00000 ;r3 As==00, PC rel. 0x00282
+0+0284 <[^>]*> 40 18 b0 e0 5a 5a 00 00         xorx.w  #23130, 0x00000 ;0x05a5a, PC rel. 0x0028a
+0+028c <[^>]*> 40 18 90 e2 00 00 00 00         xorx.w  &0x00000,0x00000        ; PC rel. 0x00292
+0+0294 <[^>]*> 40 18 a0 e8 00 00       xorx.w  @r8,    0x00000 ; PC rel. 0x00298
+0+029a <[^>]*> 40 18 80 e8 00 00       xorx.w  r8,     0x00000 ; PC rel. 0x0029e
+0+02a0 <[^>]*> 40 18 d0 e6 02 00 00 00         xorx.b  2\(r6\),        0x00000 ; PC rel. 0x002a6
+0+02a8 <[^>]*> 40 18 f0 e8 00 00       xorx.b  @r8\+,  0x00000 ; PC rel. 0x002ac
+0+02ae <[^>]*> 00 18 d2 e0 00 00 00 00         xorx.a  0x00000,&0x00000;PC rel. 0x002b2
+0+02b6 <[^>]*> 40 18 26 e5     xorx.w  @r5,    r6      ;
+0+02ba <[^>]*> 04 18 ff e0 39 30 78 56         xorx.a  #12345, 284280\(r15\);0x03039, 0x45678
+0+02c2 <[^>]*> a7 01 45 23     adda    #74565, r7      ;0x12345
+0+02c6 <[^>]*> ee 06           adda    r6,     r14     ;
+0+02c8 <[^>]*> 80 00 00 00     mova    #0,     r0      ;
+0+02cc <[^>]*> 80 01 44 10     mova    #69700, r0      ;0x11044
+0+02d0 <[^>]*> c0 05           mova    r5,     r0      ;
+0+02d2 <[^>]*> 20 00 00 00     bra     &0              ;
+0+02d6 <[^>]*> 00 05           bra     @r5             ;
+0+02d8 <[^>]*> 10 05           bra     @r5\+           ;
+0+02da <[^>]*> 30 05 76 98     bra     -26506\(r5\)    ;0xffff9876
+0+02de <[^>]*> 45 13           calla   r5              ;
+0+02e0 <[^>]*> 56 13 00 00     calla   0\(r6\)         ;0x00000
+0+02e4 <[^>]*> 67 13           calla   @r7             ;
+0+02e6 <[^>]*> 78 13           calla   @r8\+           ;
+0+02e8 <[^>]*> 80 13 00 00     calla   &0              ;0x00000
+0+02ec <[^>]*> 90 13 00 00     calla   0\(PC\)         ;PC rel. 0x002ee
+0+02f0 <[^>]*> b0 13 00 00     calla   #0              ;0x00000
+0+02f4 <[^>]*> 40 18 06 43     clrx.w  r6              ;
+0+02f8 <[^>]*> d2 01           cmpa    r1,     r2      ;
+0+02fa <[^>]*> 93 0f cb ed     cmpa    #1043915,r3     ;0xfedcb
+0+02fe <[^>]*> 40 18 25 83     decdx.w r5              ;
+0+0302 <[^>]*> 40 18 25 53     incdx.w r5              ;
+0+0306 <[^>]*> c8 09           mova    r9,     r8      ;
+0+0308 <[^>]*> 8c 01 45 23     mova    #74565, r12     ;0x12345
+0+030c <[^>]*> 38 09 00 01     mova    256\(r9\),r8    ;0x00100
+0+0310 <[^>]*> 2c 00 00 00     mova    &0,     r12     ;
+0+0314 <[^>]*> 08 09           mova    @r9,    r8      ;
+0+0316 <[^>]*> 18 09           mova    @r9\+,  r8      ;
+0+0318 <[^>]*> 79 08 00 01     mova    r8,     256\(r9\)       ; 0x00100
+0+031c <[^>]*> 60 0d 00 00     mova    r13,    &0      ;
+0+0320 <[^>]*> 10 01           reta                    ;
+0+0322 <[^>]*> 00 13           reti                    
+0+0324 <[^>]*> f6 05           suba    r5,     r6      ;
+0+0326 <[^>]*> b6 0f ff ff     suba    #1048575,r6     ;0xfffff
+0+032a <[^>]*> 40 18 80 93 00 00       cmpx.w  #0,     0x00000 ;r3 As==00, PC rel. 0x0032e
+0+0330 <[^>]*> 05 17           popm    #1,     r5      ;16-bit words
+0+0332 <[^>]*> 2d 16           popm.a  #3,     r15     ;20-bit words
+0+0334 <[^>]*> 75 17           popm    #8,     r12     ;16-bit words
+0+0336 <[^>]*> 40 18 3a 41     popx.w  r10             ;
+0+033a <[^>]*> 00 18 7a 41     popx.a  r10             ;
+0+033e <[^>]*> 40 18 7a 41     popx.b  r10             ;
+0+0342 <[^>]*> 40 18 3a 41     popx.w  r10             ;
+0+0346 <[^>]*> 09 15           pushm   #1,     r9      ;16-bit words
+0+0348 <[^>]*> 19 14           pushm.a #2,     r9      ;20-bit words
+0+034a <[^>]*> 29 15           pushm   #3,     r9      ;16-bit words
+0+034c <[^>]*> 40 18 08 12     pushx.w r8              ;
+0+0350 <[^>]*> 00 18 48 12     pushx.a r8              ;
+0+0354 <[^>]*> 40 18 52 12 00 00       pushx.b &0x0000         ;
+0+035a <[^>]*> 40 18 08 12     pushx.w r8              ;
+0+035e <[^>]*> 5f 02           rlam    #1,     r15     ;
+0+0360 <[^>]*> 4f 06           rlam.a  #2,     r15     ;
+0+0362 <[^>]*> 5f 0a           rlam    #3,     r15     ;
+0+0364 <[^>]*> 40 18 06 56     rlax.w  r6              ;
+0+0368 <[^>]*> 00 18 46 56     rlax.a  r6              ;
+0+036c <[^>]*> 40 18 06 56     rlax.w  r6              ;
+0+0370 <[^>]*> 40 18 06 66     rlcx.w  r6              ;
+0+0374 <[^>]*> 00 18 46 66     rlcx.a  r6              ;
+0+0378 <[^>]*> 40 18 06 66     rlcx.w  r6              ;
+0+037c <[^>]*> 56 01           rram    #1,     r6      ;
+0+037e <[^>]*> 46 0d           rram.a  #4,     r6      ;
+0+0380 <[^>]*> 56 05           rram    #2,     r6      ;
+0+0382 <[^>]*> 40 18 0b 11     rrax.w  r11             ;
+0+0386 <[^>]*> 00 18 4b 11     rrax.a  r11             ;
+0+038a <[^>]*> 40 18 0b 11     rrax.w  r11             ;
+0+038e <[^>]*> 55 0c           rrcm    #4,     r5      ;
+0+0390 <[^>]*> 45 00           rrcm.a  #1,     r5      ;
+0+0392 <[^>]*> 55 08           rrcm    #3,     r5      ;
+0+0394 <[^>]*> 40 18 0d 10     rrcx.w  r13             ;
+0+0398 <[^>]*> 00 18 4d 10     rrcx.a  r13             ;
+0+039c <[^>]*> 40 18 0d 10     rrcx.w  r13             ;
+0+03a0 <[^>]*> 54 0b           rrum    #3,     r4      ;
+0+03a2 <[^>]*> 44 07           rrum.a  #2,     r4      ;
+0+03a4 <[^>]*> 54 03           rrum    #1,     r4      ;
+0+03a6 <[^>]*> 40 19 04 10     rrux.w  r4              ;
+0+03aa <[^>]*> 00 19 47 10     rrux.a  r7              ;
+0+03ae <[^>]*> 40 19 45 10     rrux.b  r5              ;
+0+03b2 <[^>]*> 40 19 06 10     rrux.w  r6              ;
+0+03b6 <[^>]*> 40 18 81 10     swpbx.w r1              ;
+0+03ba <[^>]*> 00 18 90 10 00 00       swpbx.a 0x0000          ;PC rel. 0x03be
+0+03c0 <[^>]*> 40 18 8c 10     swpbx.w r12             ;
+0+03c4 <[^>]*> 40 18 82 11     sxtx.w  r2              ;
+0+03c8 <[^>]*> 00 18 92 11 00 00       sxtx.a  &0x0000         ;
+0+03ce <[^>]*> 40 18 82 11     sxtx.w  r2              ;
+0+03d2 <[^>]*> 04 18 45 11     rpt #5 \{ rrax.a        r5              ;
+0+03d6 <[^>]*> 85 18 45 11     rpt r5 \{ rrax.a        r5              ;
+0+03da <[^>]*> e2 01           adda    r1,     r2      ;
+0+03dc <[^>]*> c0 01           mova    r1,     r0      ;
+0+03de <[^>]*> 41 13           calla   r1              ;
+0+03e0 <[^>]*> 40 18 01 43     clrx.w  r1              ;
+0+03e4 <[^>]*> d2 01           cmpa    r1,     r2      ;
+0+03e6 <[^>]*> 40 18 21 83     decdx.w r1              ;
+0+03ea <[^>]*> 40 18 21 53     incdx.w r1              ;
+0+03ee <[^>]*> c2 01           mova    r1,     r2      ;
+0+03f0 <[^>]*> 10 01           reta                    ;
+0+03f2 <[^>]*> f2 01           suba    r1,     r2      ;
+0+03f4 <[^>]*> 40 18 80 93 00 00       cmpx.w  #0,     0x00000 ;r3 As==00, PC rel. 0x003f8
+0+03fa <[^>]*> c1 19 01 10     rpt r1 \{ rrux.w        r1              ;
+0+03fe <[^>]*> 41 18 02 10     rpt #2 \{ rrcx.w        r2              ;
+0+0402 <[^>]*> 42 18 47 11     rpt #3 \{ rrax.b        r7              ;
+0+0406 <[^>]*> 84 18 44 11     rpt r4 \{ rrax.a        r4              ;
+0+040a <[^>]*> 44 18 45 55     rpt #5 \{ rlax.b        r5              ;
+0+040e <[^>]*> 05 18 46 66     rpt #6 \{ rlcx.a        r6              ;