Fixed x86 division and modulus and merged their entry points.
Also enabled compilation of fill-array-data instructions in x86
(untested), and improved x86 disassembly.
Change-Id: Ia3d8d0766080d01f1c228f9283085024cadd528b
diff --git a/src/disassembler_x86.cc b/src/disassembler_x86.cc
index d2c860b..dc12ef7 100644
--- a/src/disassembler_x86.cc
+++ b/src/disassembler_x86.cc
@@ -406,6 +406,14 @@
case 0xE8: opcode << "call"; branch_bytes = 4; break;
case 0xE9: opcode << "jmp"; branch_bytes = 4; break;
case 0xEB: opcode << "jmp"; branch_bytes = 1; break;
+ case 0xF6: case 0xF7:
+ static const char* f7_opcodes[] = {"test", "unknown-f7", "not", "neg", "mul edx:eax, eax *", "imul edx:eax, eax *", "div edx:eax, edx:eax /", "idiv edx:eax, edx:eax /"};
+ modrm_opcodes = f7_opcodes;
+ has_modrm = true;
+ reg_is_opcode = true;
+ store = true;
+ immediate_bytes = ((instr[1] & 0x38) == 0) ? 1 : 0;
+ break;
case 0xFF:
static const char* ff_opcodes[] = {"inc", "dec", "call", "call", "jmp", "jmp", "push", "unknown-ff"};
modrm_opcodes = ff_opcodes;