From e5009e29eaea99017b314f6b1e97cf6b56eb15fd Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 1 Jul 2010 12:36:29 -0700 Subject: [PATCH] 6a: assemble CMPPD as 6l expects libmach: disassemble CMPPD as 6a expects R=ken2 CC=Charlie Dorian, golang-dev https://golang.org/cl/1704046 --- src/cmd/6a/a.y | 2 +- src/libmach/8db.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/cmd/6a/a.y b/src/cmd/6a/a.y index c48246072d0..804f638a072 100644 --- a/src/cmd/6a/a.y +++ b/src/cmd/6a/a.y @@ -260,7 +260,7 @@ spec8: /* CMPPS/CMPPD */ { $$.from = $1; $$.to = $3; - $$.from.offset = $5; + $$.to.offset = $5; } spec9: /* shufl */ diff --git a/src/libmach/8db.c b/src/libmach/8db.c index ba14dfc3c37..92e4c7694fa 100644 --- a/src/libmach/8db.c +++ b/src/libmach/8db.c @@ -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;