src/cmd/6a/a.y | 2 +- src/libmach/8db.c | 13 ++++++++++--- diff --git a/src/cmd/6a/a.y b/src/cmd/6a/a.y index c48246072d045405914f54cedad4fcdb7c8c44de..804f638a072cf18d59c88a297f0c7a65e632ee4b 100644 --- a/src/cmd/6a/a.y +++ b/src/cmd/6a/a.y @@ -260,7 +260,7 @@ reg ',' rem ',' con { $$.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 ba14dfc3c3761c408775af2167cb4256a07f42d5..92e4c7694fa4de782be66b8ca54cc474e3ce197b 100644 --- a/src/libmach/8db.c +++ b/src/libmach/8db.c @@ -695,7 +695,7 @@ [0xB0] RM,0, "CMPXCHGB %r,%e", [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 @@ static void prinstr(Instr *ip, char *fmt) { + int sharp; vlong v; if (ip->prefix) @@ -2083,7 +2084,12 @@ if (*fmt != '%'){ *ip->curr++ = *fmt; continue; } - switch(*++fmt){ + sharp = 0; + if(*++fmt == '#') { + sharp = 1; + ++fmt; + } + switch(*fmt){ case '%': *ip->curr++ = '%'; break; @@ -2107,7 +2113,8 @@ case 'O': bprint(ip,"%s", ONAME(ip)); break; case 'i': - bprint(ip, "$"); + if(!sharp) + bprint(ip, "$"); v = ip->imm; if(ip->rex & REXW) v = ip->imm64;