diff options
Diffstat (limited to 'src/liblink')
| -rw-r--r-- | src/liblink/list6.c | 12 | ||||
| -rw-r--r-- | src/liblink/list8.c | 19 |
2 files changed, 10 insertions, 21 deletions
diff --git a/src/liblink/list6.c b/src/liblink/list6.c index db8b0011af..d9e0b45c7a 100644 --- a/src/liblink/list6.c +++ b/src/liblink/list6.c @@ -102,6 +102,11 @@ Pconv(Fmt *fp) default: sprint(str, "%.5lld (%L) %A %D,%D", p->pc, p->lineno, p->as, &p->from, &p->to); + // TODO(rsc): This special case is for SHRQ $32, AX:DX, which encodes as + // SHRQ $32(DX*0), AX + // Remove. + if((p->from.type == TYPE_REG || p->from.type == TYPE_CONST) && p->from.index != REG_NONE) + sprint(strchr(str, 0), ":%R", p->from.index); break; } bigP = nil; @@ -195,13 +200,6 @@ Dconv(Fmt *fp) case TYPE_CONST: sprint(str, "$%lld", a->offset); - // TODO(rsc): This special case is for SHRQ $32, AX:DX, which encodes as - // SHRQ $32(DX*0), AX - // Remove. - if(a->index != REG_NONE) { - sprint(s, "(%R*%d)", (int)a->index, (int)a->scale); - strcat(str, s); - } break; case TYPE_TEXTSIZE: diff --git a/src/liblink/list8.c b/src/liblink/list8.c index 66db2f1d78..dbba103280 100644 --- a/src/liblink/list8.c +++ b/src/liblink/list8.c @@ -89,6 +89,11 @@ Pconv(Fmt *fp) default: sprint(str, "%.5lld (%L) %A %D,%D", p->pc, p->lineno, p->as, &p->from, &p->to); + // TODO(rsc): This special case is for SHRQ $32, AX:DX, which encodes as + // SHRQ $32(DX*0), AX + // Remove. + if((p->from.type == TYPE_REG || p->from.type == TYPE_CONST) && p->from.index != 0) + sprint(strchr(str, 0), ":%R", p->from.index); break; } bigP = nil; @@ -131,13 +136,6 @@ Dconv(Fmt *fp) break; } sprint(str, "%R", a->reg); - // TODO(rsc): This special case is for SHRQ $32, AX:DX, which encodes as - // SHRQ $32(DX*0), AX - // Remove. - if(a->index != REG_NONE) { - sprint(s, "(%R*%d)", (int)a->index, (int)a->scale); - strcat(str, s); - } break; case TYPE_BRANCH: @@ -189,13 +187,6 @@ Dconv(Fmt *fp) case TYPE_CONST: sprint(str, "$%lld", a->offset); - // TODO(rsc): This special case is for SHRQ $32, AX:DX, which encodes as - // SHRQ $32(DX*0), AX - // Remove. - if(a->index != REG_NONE) { - sprint(s, "(%R*%d)", (int)a->index, (int)a->scale); - strcat(str, s); - } break; case TYPE_TEXTSIZE: |
