Fix pp field in readPrefix for VEX3 and EVEX (#1015) (#1016)
diff --git a/arch/X86/X86DisassemblerDecoder.c b/arch/X86/X86DisassemblerDecoder.c
index 17df7d9..5c60aac 100644
--- a/arch/X86/X86DisassemblerDecoder.c
+++ b/arch/X86/X86DisassemblerDecoder.c
@@ -723,7 +723,13 @@
| (xFromEVEX2of4(insn->vectorExtensionPrefix[1]) << 1)
| (bFromEVEX2of4(insn->vectorExtensionPrefix[1]) << 0);
}
-
+ switch (ppFromEVEX3of4(insn->vectorExtensionPrefix[2])) {
+ default:
+ break;
+ case VEX_PREFIX_66:
+ hasOpSize = true;
+ break;
+ }
//dbgprintf(insn, "Found EVEX prefix 0x%hhx 0x%hhx 0x%hhx 0x%hhx",
// insn->vectorExtensionPrefix[0], insn->vectorExtensionPrefix[1],
// insn->vectorExtensionPrefix[2], insn->vectorExtensionPrefix[3]);
@@ -765,6 +771,13 @@
| (bFromVEX2of3(insn->vectorExtensionPrefix[1]) << 0);
}
+ switch (ppFromVEX3of3(insn->vectorExtensionPrefix[2])) {
+ default:
+ break;
+ case VEX_PREFIX_66:
+ hasOpSize = true;
+ break;
+ }
}
} else if (byte == 0xc5) {
uint8_t byte1;