diff options
| author | Camille Mougey <commial@gmail.com> | 2018-08-06 22:26:36 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-06 22:26:36 +0200 |
| commit | e38b5dd91d10ad66d537675e4592f68eda9fcce2 (patch) | |
| tree | 912333c96758461e9c226d8da037c0084d3c10a0 /miasm2/jitter/llvmconvert.py | |
| parent | e4a255d9c6175b5d9f2ab15471d848705fe1cc4e (diff) | |
| parent | efc5ec2e8c394475e3a2be68bc29821e4d980b1b (diff) | |
| download | miasm-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.py | 22 |
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") |