about summary refs log tree commit diff stats
path: root/miasm2/arch/x86/sem.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2017-02-03 14:57:02 +0100
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2017-02-03 14:57:02 +0100
commit6125d37a9cf2b9d2907668552c31a0510176a822 (patch)
treebad58924a72fe33fde7ddc37a5d4dee795b40f75 /miasm2/arch/x86/sem.py
parent7d7d8e0d2148e479eaf4d098416282c07e785487 (diff)
downloadmiasm-6125d37a9cf2b9d2907668552c31a0510176a822.tar.gz
miasm-6125d37a9cf2b9d2907668552c31a0510176a822.zip
X86: add pslldq
Diffstat (limited to '')
-rw-r--r--miasm2/arch/x86/sem.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py
index ea5830e3..df5a07a0 100644
--- a/miasm2/arch/x86/sem.py
+++ b/miasm2/arch/x86/sem.py
@@ -3627,6 +3627,15 @@ def pslld(ir, instr, a, b):
 def psllq(ir, instr, a, b):
     return ps_rl_ll(ir, instr, a, b, "<<",  64)
 
+def pslldq(ir, instr, a, b):
+    assert b.is_int()
+    e = []
+    count = int(b)
+    if count > 15:
+        return [m2_expr.ExprAff(a, m2_expr.ExprInt(0, a.size))], []
+    else:
+        return [m2_expr.ExprAff(a, a << m2_expr.ExprInt(8*count, a.size))], []
+
 
 def iret(ir, instr):
     """IRET implementation
@@ -4361,6 +4370,7 @@ mnemo_func = {'mov': mov,
               "psllw": psllw,
               "pslld": pslld,
               "psllq": psllq,
+              "pslldq": pslldq,
 
               "pmaxub": pmaxub,
               "pmaxuw": pmaxuw,