diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-11-06 22:23:44 +0100 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-11-06 22:23:44 +0100 |
| commit | 201c1575500b4609182df0d0b4b8046413cfc76c (patch) | |
| tree | 3e783ad6cfd2a8fc36b17332621b9dad5f789d1c /src | |
| parent | 716d6678a024a2e2db37e2409d1a38bbc865fac2 (diff) | |
| download | focaccia-miasm-ck/movpd.tar.gz focaccia-miasm-ck/movpd.zip | |
Fix MOVxxPD instructions ck/movpd
The first three bits of the immediate should be masked.
Diffstat (limited to 'src')
| -rw-r--r-- | src/miasm/arch/x86/arch.py | 24 |
1 files 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)]) |