about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <fabrice.desclaux@cea.fr>2015-10-19 20:51:53 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2015-10-23 10:53:51 +0200
commitbeea5121ef2e9d0df7edfa49cb8aae2ffd9836a9 (patch)
treecb989a8b597f3e3b3fe94b1d8139008ecabc1b8a
parent5871e7da55bbffa4cadfbdf11e73366efef37c54 (diff)
downloadmiasm-beea5121ef2e9d0df7edfa49cb8aae2ffd9836a9.tar.gz
miasm-beea5121ef2e9d0df7edfa49cb8aae2ffd9836a9.zip
Arch/x86/sem: fix movd
Diffstat (limited to '')
-rw-r--r--miasm2/arch/x86/sem.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py
index ecbd9b7b..3a46a251 100644
--- a/miasm2/arch/x86/sem.py
+++ b/miasm2/arch/x86/sem.py
@@ -3213,12 +3213,14 @@ def l_str(ir, instr, a):
 
 def movd(ir, instr, a, b):
     e = []
-    if a.size == 64:
-        value = m2_expr.ExprCompose([(m2_expr.ExprInt32(0), 32, 64),
-                                     (b, 0, 32)])
-        e.append(m2_expr.ExprAff(a, value))
+    if a in regs_mm_expr:
+        e.append(m2_expr.ExprAff(a, m2_expr.ExprCompose([(b, 0, 32),
+                                                         (m2_expr.ExprInt32(0), 32, 64)])))
+    elif a in regs_xmm_expr:
+        e.append(m2_expr.ExprAff(a, m2_expr.ExprCompose([(b, 0, 32),
+                                                         (m2_expr.ExprInt_fromsize(96, 0), 32, 128)])))
     else:
-        e.append(m2_expr.ExprAff(a, b[0:32]))
+        e.append(m2_expr.ExprAff(a, b[:32]))
     return e, []
 
 def movdqu(ir, instr, a, b):