x86: handle f2/f3 prefix for 16bit. see issue #452

This commit is contained in:
Nguyen Anh Quynh 2017-05-07 14:30:06 +08:00
parent 9b1b3871d3
commit 36fb9a2fff
1 changed files with 3 additions and 2 deletions

View File

@ -1238,9 +1238,9 @@ static int getID(struct InternalInstruction *insn)
attrMask |= ATTR_OPSIZE; attrMask |= ATTR_OPSIZE;
} else if (isPrefixAtLocation(insn, 0x67, insn->necessaryPrefixLocation)) { } else if (isPrefixAtLocation(insn, 0x67, insn->necessaryPrefixLocation)) {
attrMask |= ATTR_ADSIZE; attrMask |= ATTR_ADSIZE;
} else if (isPrefixAtLocation(insn, 0xf3, insn->necessaryPrefixLocation)) { } else if (insn->mode != MODE_16BIT && isPrefixAtLocation(insn, 0xf3, insn->necessaryPrefixLocation)) {
attrMask |= ATTR_XS; attrMask |= ATTR_XS;
} else if (isPrefixAtLocation(insn, 0xf2, insn->necessaryPrefixLocation)) { } else if (insn->mode != MODE_16BIT && isPrefixAtLocation(insn, 0xf2, insn->necessaryPrefixLocation)) {
attrMask |= ATTR_XD; attrMask |= ATTR_XD;
} }
} }
@ -1260,6 +1260,7 @@ static int getID(struct InternalInstruction *insn)
return -1; return -1;
} }
/* /*
* JCXZ/JECXZ need special handling for 16-bit mode because the meaning * JCXZ/JECXZ need special handling for 16-bit mode because the meaning
* of the AdSize prefix is inverted w.r.t. 32-bit mode. * of the AdSize prefix is inverted w.r.t. 32-bit mode.