diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2010-08-18 23:20:47 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2010-08-18 23:20:47 (GMT) |
commit | c0831e2a8d16d65e8f31e52a63b703086609d8dd (patch) | |
tree | b5587b780da2b5da3fa84869431d6409e7eec782 /src/arch/x86/operand.c | |
parent | 9ed927a6b6405633a82f378438c533fd0112f16d (diff) |
Supported several extra x86 instructions.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@182 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/arch/x86/operand.c')
-rw-r--r-- | src/arch/x86/operand.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/x86/operand.c b/src/arch/x86/operand.c index 420ceec..bf7010c 100644 --- a/src/arch/x86/operand.c +++ b/src/arch/x86/operand.c @@ -1425,6 +1425,10 @@ bool _x86_read_operands(GArchInstruction *instr, const bin_t *data, off_t *pos, op = g_imm_operand_new_from_data(MDS_8_BITS, data, &op_pos[i], len, SRE_LITTLE /* FIXME */); break; + case X86_OTP_IMM16: + op = g_imm_operand_new_from_data(MDS_16_BITS, data, &op_pos[i], len, SRE_LITTLE /* FIXME */); + break; + case X86_OTP_IMM1632: if (oprsize == MDS_UNDEFINED) oprsize = va_arg(ap, MemoryDataSize); op = g_imm_operand_new_from_data(oprsize == MDS_32_BITS ? MDS_32_BITS : MDS_16_BITS, data, &op_pos[i], len, SRE_LITTLE /* FIXME */); @@ -1474,6 +1478,10 @@ bool _x86_read_operands(GArchInstruction *instr, const bin_t *data, off_t *pos, op = g_x86_mod_rm_operand_new(data, &op_pos[i], len, MDS_8_BITS); break; + case X86_OTP_RM16: + op = g_x86_mod_rm_operand_new(data, &op_pos[i], len, MDS_16_BITS); + break; + case X86_OTP_RM1632: if (oprsize == MDS_UNDEFINED) oprsize = va_arg(ap, MemoryDataSize); op = g_x86_mod_rm_operand_new(data, &op_pos[i], len, oprsize); @@ -1497,6 +1505,10 @@ bool _x86_read_operands(GArchInstruction *instr, const bin_t *data, off_t *pos, op = g_x86_data_operand_new(oprsize == MDS_32_BITS ? MDS_32_BITS : MDS_16_BITS, false); break; + case X86_OTP_ONE: + op = g_imm_operand_new_from_value(MDS_8_BITS, 1); + break; + case X86_OTP_CL: op = g_x86_register_operand_new_from_index(0x01, MDS_8_BITS); break; |