about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2016-04-26 21:45:24 +0200
committerserpilliere <serpilliere@users.noreply.github.com>2016-04-26 21:45:24 +0200
commit75af8164a0b7286baf74b3af56bf4dfb17f01b2e (patch)
tree438f77c59c265a817a261452f81508d392a05bc4
parentd9b1edbf47f6ab253372286cd3508d30b4339e53 (diff)
parent259df2eabaf826c728222215d42ca0463906f745 (diff)
downloadmiasm-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.py6
-rw-r--r--test/arch/x86/arch.py4
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",