From 791755f59dde1d1bc191fd3742d32929091dec83 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Jun 26 2018 12:40:13 +0000 Subject: Fix the MSP430 assembler's parsing of register names. 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. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index 4665eef..41a4430 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2018-06-26 Nick Clifton + + 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 * configure: Regenerate. diff --git a/gas/config/tc-msp430.c b/gas/config/tc-msp430.c index 3227287..bebae6e 100644 --- a/gas/config/tc-msp430.c +++ b/gas/config/tc-msp430.c @@ -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 diff --git a/gas/testsuite/gas/msp430/msp430x.d b/gas/testsuite/gas/msp430/msp430x.d index 8eea453..ecaef8f 100644 --- a/gas/testsuite/gas/msp430/msp430x.d +++ b/gas/testsuite/gas/msp430/msp430x.d @@ -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 ;