]> Cypherpunks repositories - gostls13.git/commitdiff
6a: assemble CMPPD as 6l expects
authorRuss Cox <rsc@golang.org>
Thu, 1 Jul 2010 19:36:29 +0000 (12:36 -0700)
committerRuss Cox <rsc@golang.org>
Thu, 1 Jul 2010 19:36:29 +0000 (12:36 -0700)
libmach: disassemble CMPPD as 6a expects

R=ken2
CC=Charlie Dorian, golang-dev
https://golang.org/cl/1704046

src/cmd/6a/a.y
src/libmach/8db.c

index c48246072d045405914f54cedad4fcdb7c8c44de..804f638a072cf18d59c88a297f0c7a65e632ee4b 100644 (file)
@@ -260,7 +260,7 @@ spec8:      /* CMPPS/CMPPD */
        {
                $$.from = $1;
                $$.to = $3;
-               $$.from.offset = $5;
+               $$.to.offset = $5;
        }
 
 spec9: /* shufl */
index ba14dfc3c3761c408775af2167cb4256a07f42d5..92e4c7694fa4de782be66b8ca54cc474e3ce197b 100644 (file)
@@ -695,7 +695,7 @@ static Optable optab0F[256]=
 [0xB1] RM,0,           "CMPXCHG%S      %r,%e",
 [0xC0] RMB,0,          "XADDB  %r,%e",
 [0xC1] RM,0,           "XADD%S %r,%e",
-[0xC2] RM,Ib,          "CMP%s  %i,%x,%X",
+[0xC2] RM,Ib,          "CMP%s  %x,%X,%#i",
 [0xC3] RM,0,           "MOVNTI%S       %r,%e",
 [0xC6] RM,Ib,          "SHUF%s %i,%x,%X",
 [0xC8] 0,0,            "BSWAP  AX",
@@ -2074,6 +2074,7 @@ pea(Instr *ip)
 static void
 prinstr(Instr *ip, char *fmt)
 {
+       int sharp;
        vlong v;
 
        if (ip->prefix)
@@ -2083,7 +2084,12 @@ prinstr(Instr *ip, char *fmt)
                        *ip->curr++ = *fmt;
                        continue;
                }
-               switch(*++fmt){
+               sharp = 0;
+               if(*++fmt == '#') {
+                       sharp = 1;
+                       ++fmt;
+               }
+               switch(*fmt){
                case '%':
                        *ip->curr++ = '%';
                        break;
@@ -2107,7 +2113,8 @@ prinstr(Instr *ip, char *fmt)
                        bprint(ip,"%s", ONAME(ip));
                        break;
                case 'i':
-                       bprint(ip, "$");
+                       if(!sharp)
+                               bprint(ip, "$");
                        v = ip->imm;
                        if(ip->rex & REXW)
                                v = ip->imm64;