From 4e61dc5e3ea882022e815814ed324fa7515923a6 Mon Sep 17 00:00:00 2001 From: iximeow Date: Sun, 9 Aug 2020 02:07:52 -0700 Subject: support four-reg operand forms, new tests --- src/long_mode/mod.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/long_mode/mod.rs') diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index 5c431b4..3fcf4ab 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -368,6 +368,7 @@ impl OperandSpec { OperandSpec::RegRRR | OperandSpec::RegMMM | OperandSpec::RegVex | + OperandSpec::Reg4 | OperandSpec::EnterFrameSize | OperandSpec::Nothing => { false @@ -392,6 +393,9 @@ impl Operand { OperandSpec::RegVex => { Operand::Register(inst.vex_reg) } + OperandSpec::Reg4 => { + Operand::Register(RegSpec { num: inst.imm as u8, bank: inst.vex_reg.bank }) + } OperandSpec::ImmI8 => Operand::ImmediateI8(inst.imm as i8), OperandSpec::ImmU8 => Operand::ImmediateU8(inst.imm as u8), OperandSpec::ImmI16 => Operand::ImmediateI16(inst.imm as i16), @@ -1596,6 +1600,9 @@ enum OperandSpec { RegMMM, // the register selected by vex-vvvv bits RegVex, + // the register selected by a handful of avx2 vex-coded instructions, + // stuffed in imm4. + Reg4, ImmI8, ImmI16, ImmI32, -- cgit v1.1