disasm: 32-bit index registers were displayed as 64 bits
authorH. Peter Anvin <hpa@zytor.com>
Thu, 27 Dec 2007 03:10:20 +0000 (19:10 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 27 Dec 2007 03:10:20 +0000 (19:10 -0800)
Fix bug where 32-bit index registers got incorrectly displayed as 64
bits:

00000000  678B040B          mov eax,[ebx+rcx]
00000004  678B044B          mov eax,[ebx+rcx*2]
00000008  678B045B          mov eax,[ebx+rbx*2]

disasm.c

index 3b60407..ab6ac7b 100644 (file)
--- a/disasm.c
+++ b/disasm.c
@@ -325,7 +325,7 @@ static uint8_t *do_ea(uint8_t *data, int modrm, int asize,
            else if (a64)
                op->indexreg = rd_reg64[index | ((rex & REX_X) ? 8 : 0)];
            else
-               op->indexreg = rd_reg64[index | ((rex & REX_X) ? 8 : 0)];
+               op->indexreg = rd_reg32[index | ((rex & REX_X) ? 8 : 0)];
 
            if (base == 5 && mod == 0) {
                op->basereg = -1;