about summary refs log tree commit diff stats
path: root/miasm2/jitter/llvmconvert.py
diff options
context:
space:
mode:
authorCamille Mougey <commial@gmail.com>2018-08-06 22:26:36 +0200
committerGitHub <noreply@github.com>2018-08-06 22:26:36 +0200
commite38b5dd91d10ad66d537675e4592f68eda9fcce2 (patch)
tree912333c96758461e9c226d8da037c0084d3c10a0 /miasm2/jitter/llvmconvert.py
parente4a255d9c6175b5d9f2ab15471d848705fe1cc4e (diff)
parentefc5ec2e8c394475e3a2be68bc29821e4d980b1b (diff)
downloadmiasm-e38b5dd91d10ad66d537675e4592f68eda9fcce2.tar.gz
miasm-e38b5dd91d10ad66d537675e4592f68eda9fcce2.zip
Merge pull request #816 from serpilliere/operator_high_level
Operator high level
Diffstat (limited to '')
-rw-r--r--miasm2/jitter/llvmconvert.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/miasm2/jitter/llvmconvert.py b/miasm2/jitter/llvmconvert.py
index 4a0eae93..de5f19df 100644
--- a/miasm2/jitter/llvmconvert.py
+++ b/miasm2/jitter/llvmconvert.py
@@ -830,6 +830,28 @@ class LLVMFunction():
                 self.update_cache(expr, ret)
                 return ret
 
+
+            if op.startswith('zeroExt_'):
+                arg = expr.args[0]
+                if expr.size == arg.size:
+                    return arg
+                new_expr = ExprCompose(arg, ExprInt(0, expr.size - arg.size))
+                return self.add_ir(new_expr)
+
+            if op.startswith("signExt_"):
+                arg = expr.args[0]
+                add_size = expr.size - arg.size
+                new_expr = ExprCompose(
+                    arg,
+                    ExprCond(
+                        arg.msb(),
+                        ExprInt(size2mask(add_size), add_size),
+                        ExprInt(0, add_size)
+                    )
+                )
+                return self.add_ir(new_expr)
+
+
             if op == "segm":
                 fc_ptr = self.mod.get_global("segm2addr")