diff options
| author | serpilliere <serpilliere@users.noreply.github.com> | 2016-04-26 21:45:24 +0200 |
|---|---|---|
| committer | serpilliere <serpilliere@users.noreply.github.com> | 2016-04-26 21:45:24 +0200 |
| commit | 75af8164a0b7286baf74b3af56bf4dfb17f01b2e (patch) | |
| tree | 438f77c59c265a817a261452f81508d392a05bc4 | |
| parent | d9b1edbf47f6ab253372286cd3508d30b4339e53 (diff) | |
| parent | 259df2eabaf826c728222215d42ca0463906f745 (diff) | |
| download | miasm-75af8164a0b7286baf74b3af56bf4dfb17f01b2e.tar.gz miasm-75af8164a0b7286baf74b3af56bf4dfb17f01b2e.zip | |
Merge pull request #361 from mrphrazer/x86_opcodes
x86 arch: extended opcode decoding for MOVUPS
| -rw-r--r-- | miasm2/arch/x86/arch.py | 6 | ||||
| -rw-r--r-- | test/arch/x86/arch.py | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/miasm2/arch/x86/arch.py b/miasm2/arch/x86/arch.py index b5c72d32..0637d3e9 100644 --- a/miasm2/arch/x86/arch.py +++ b/miasm2/arch/x86/arch.py @@ -3652,8 +3652,8 @@ addop("movsq", [bs8(0xa5), bs_opmode64]) addop("movsx", [bs8(0x0f), bs("1011111"), w8, sx] + rmmod(rmreg, rm_arg_sx)) addop("movsxd", [bs8(0x63), sxd, bs_mode64] + rmmod(rmreg, rm_arg_sxd)) -addop("movups", - [bs8(0x0f), bs8(0x10), no_xmm_pref] + rmmod(xmm_reg, rm_arg_xmm)) +addop("movups", [bs8(0x0f), bs("0001000"), swapargs, no_xmm_pref] + + rmmod(xmm_reg, rm_arg_xmm), [xmm_reg, rm_arg_xmm]) addop("movsd", [bs8(0x0f), bs("0001000"), swapargs, pref_f2] + rmmod(xmm_reg, rm_arg_xmm_m64), [xmm_reg, rm_arg_xmm_m64]) addop("movss", [bs8(0x0f), bs("0001000"), swapargs, pref_f3] + @@ -4130,6 +4130,8 @@ addop("psrld", [bs8(0x0f), bs8(0xd2), no_xmm_pref] + addop("psrld", [bs8(0x0f), bs8(0xd2), pref_66] + rmmod(xmm_reg, rm_arg_xmm), [xmm_reg, rm_arg_xmm]) +addop("psrldq", [bs8(0x0f), bs8(0x73), pref_66] + + rmmod(d3, rm_arg_xmm) + [u08], [rm_arg_xmm, u08]) addop("psrlw", [bs8(0x0f), bs8(0x71), no_xmm_pref] + rmmod(d2, rm_arg_mm) + [u08], [rm_arg_mm, u08]) diff --git a/test/arch/x86/arch.py b/test/arch/x86/arch.py index f3a01d97..d48a707c 100644 --- a/test/arch/x86/arch.py +++ b/test/arch/x86/arch.py @@ -2295,6 +2295,8 @@ reg_tests = [ (m32, "00000000 MOVUPS XMM2, XMMWORD PTR [ECX]", "0f1011"), + (m64, "00000000 MOVUPS XMMWORD PTR [RCX+0x50], XMM1", + "0f114950"), (m32, "00000000 MOVSD XMM2, QWORD PTR [ECX]", "f20f1011"), (m32, "00000000 MOVSD XMM2, XMM1", @@ -2669,6 +2671,8 @@ reg_tests = [ "0F72D605"), (m32, "00000000 PSRLD XMM6, 0x5", "660F72D605"), + (m64, "00000000 PSRLDQ XMM0, 0x8", + "660f73d808"), (m32, "00000000 PSRLW MM6, 0x5", "0F71D605"), (m32, "00000000 PSRLW XMM6, 0x5", |