From 201c1575500b4609182df0d0b4b8046413cfc76c Mon Sep 17 00:00:00 2001 From: Christian Krinitsin Date: Thu, 6 Nov 2025 22:23:44 +0100 Subject: Fix MOVxxPD instructions The first three bits of the immediate should be masked. --- src/miasm/arch/x86/arch.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/miasm/arch/x86/arch.py b/src/miasm/arch/x86/arch.py index 8f96d32e..3c557b31 100644 --- a/src/miasm/arch/x86/arch.py +++ b/src/miasm/arch/x86/arch.py @@ -4416,23 +4416,23 @@ addop("maxsd", [bs8(0x0f), bs8(0x5f), pref_f2] + rmmod(xmm_reg, rm_arg_xmm_m64)) addop("maxss", [bs8(0x0f), bs8(0x5f), pref_f3] + rmmod(xmm_reg, rm_arg_xmm_m32)) for cond_name, value in [ - ("eq", 0x00), - ("lt", 0x01), - ("le", 0x02), - ("unord", 0x03), - ("neq", 0x04), - ("nlt", 0x05), - ("nle", 0x06), - ("ord", 0x07), + ("eq", "000"), + ("lt", "001"), + ("le", "010"), + ("unord", "011"), + ("neq", "100"), + ("nlt", "101"), + ("nle", "110"), + ("ord", "111"), ]: addop("cmp%sps" % cond_name, [bs8(0x0f), bs8(0xc2), no_xmm_pref] + - rmmod(xmm_reg, rm_arg_xmm_m64) + [bs8(value)]) + rmmod(xmm_reg, rm_arg_xmm_m64) + [bs(l=5), bs(value)]) addop("cmp%spd" % cond_name, [bs8(0x0f), bs8(0xc2), pref_66] + - rmmod(xmm_reg, rm_arg_xmm_m64) + [bs8(value)]) + rmmod(xmm_reg, rm_arg_xmm_m64) + [bs(l=5), bs(value)]) addop("cmp%sss" % cond_name, [bs8(0x0f), bs8(0xc2), pref_f3] + - rmmod(xmm_reg, rm_arg_xmm_m32) + [bs8(value)]) + rmmod(xmm_reg, rm_arg_xmm_m32) + [bs(l=5), bs(value)]) addop("cmp%ssd" % cond_name, [bs8(0x0f), bs8(0xc2), pref_f2] + - rmmod(xmm_reg, rm_arg_xmm_m32) + [bs8(value)]) + rmmod(xmm_reg, rm_arg_xmm_m32) + [bs(l=5), bs(value)]) -- cgit 1.4.1