aboutsummaryrefslogtreecommitdiff
path: root/src/long_mode/vex.rs
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2021-06-28 00:09:40 -0700
committeriximeow <me@iximeow.net>2021-06-28 00:09:40 -0700
commit5a1fd6f773320c845f2549722b9f27094d68bdf2 (patch)
treee65285474a54641c70761db9f38ab5a2c1460748 /src/long_mode/vex.rs
parentc42f84b37c9be599442a44caab289f5fdf971649 (diff)
protected mode memory sizes
also some long-mode cleanup in corresponding areas
Diffstat (limited to 'src/long_mode/vex.rs')
-rw-r--r--src/long_mode/vex.rs6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/long_mode/vex.rs b/src/long_mode/vex.rs
index 6db99a1..35f979f 100644
--- a/src/long_mode/vex.rs
+++ b/src/long_mode/vex.rs
@@ -420,6 +420,7 @@ fn read_vex_operands<T: Iterator<Item=u8>>(bytes: &mut T, instruction: &mut Inst
instruction.opcode = if modrm & 0xc0 == 0xc0 {
Opcode::VMOVHLPS
} else {
+ instruction.mem_size = 4;
Opcode::VMOVLPS
};
instruction.modrm_rrr =
@@ -427,7 +428,6 @@ fn read_vex_operands<T: Iterator<Item=u8>>(bytes: &mut T, instruction: &mut Inst
instruction.operands[0] = OperandSpec::RegRRR;
instruction.operands[1] = OperandSpec::RegVex;
instruction.operands[2] = read_E_xmm(bytes, instruction, modrm, length)?;
- instruction.mem_size = 4;
instruction.operand_count = 3;
Ok(())
}
@@ -436,6 +436,7 @@ fn read_vex_operands<T: Iterator<Item=u8>>(bytes: &mut T, instruction: &mut Inst
instruction.opcode = if modrm & 0xc0 == 0xc0 {
Opcode::VMOVLHPS
} else {
+ instruction.mem_size = 8;
Opcode::VMOVHPS
};
instruction.modrm_rrr =
@@ -443,7 +444,6 @@ fn read_vex_operands<T: Iterator<Item=u8>>(bytes: &mut T, instruction: &mut Inst
instruction.operands[0] = OperandSpec::RegRRR;
instruction.operands[1] = OperandSpec::RegVex;
instruction.operands[2] = read_E_xmm(bytes, instruction, modrm, length)?;
- instruction.mem_size = 8;
instruction.operand_count = 3;
Ok(())
}
@@ -537,7 +537,6 @@ fn read_vex_operands<T: Iterator<Item=u8>>(bytes: &mut T, instruction: &mut Inst
instruction.operands[2] = mem_oper;
instruction.imm = read_imm_unsigned(bytes, 1, length)?;
instruction.operands[3] = OperandSpec::ImmU8;
- instruction.mem_size = 1;
if mem_oper != OperandSpec::RegMMM {
instruction.mem_size = 1;
}
@@ -555,7 +554,6 @@ fn read_vex_operands<T: Iterator<Item=u8>>(bytes: &mut T, instruction: &mut Inst
instruction.operands[2] = mem_oper;
instruction.imm = read_imm_unsigned(bytes, 1, length)?;
instruction.operands[3] = OperandSpec::ImmU8;
- instruction.mem_size = 4;
if mem_oper != OperandSpec::RegMMM {
instruction.mem_size = 4;
}