x86: fix operand size for 'CALL PTR [REG]'. bug reported by Gabriel Quadros

This commit is contained in:
Nguyen Anh Quynh 2015-02-10 00:21:00 +08:00
parent da1a1b8fcc
commit 4363911eb4
2 changed files with 29 additions and 0 deletions

View File

@ -56,6 +56,20 @@ static void set_mem_access(MCInst *MI, bool status)
static void printopaquemem(MCInst *MI, unsigned OpNo, SStream *O) static void printopaquemem(MCInst *MI, unsigned OpNo, SStream *O)
{ {
switch(MI->csh->mode) {
case CS_MODE_16:
MI->x86opsize = 2;
break;
case CS_MODE_32:
MI->x86opsize = 4;
break;
case CS_MODE_64:
MI->x86opsize = 8;
break;
default: // never reach
break;
}
printMemReference(MI, OpNo, O); printMemReference(MI, OpNo, O);
} }

View File

@ -58,6 +58,21 @@ static void set_mem_access(MCInst *MI, bool status)
static void printopaquemem(MCInst *MI, unsigned OpNo, SStream *O) static void printopaquemem(MCInst *MI, unsigned OpNo, SStream *O)
{ {
SStream_concat0(O, "ptr "); SStream_concat0(O, "ptr ");
switch(MI->csh->mode) {
case CS_MODE_16:
MI->x86opsize = 2;
break;
case CS_MODE_32:
MI->x86opsize = 4;
break;
case CS_MODE_64:
MI->x86opsize = 8;
break;
default: // never reach
break;
}
printMemReference(MI, OpNo, O); printMemReference(MI, OpNo, O);
} }