diff options
Diffstat (limited to 'miasm2/arch/arm/jit.py')
| -rw-r--r-- | miasm2/arch/arm/jit.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/miasm2/arch/arm/jit.py b/miasm2/arch/arm/jit.py index 267bcea6..716a8826 100644 --- a/miasm2/arch/arm/jit.py +++ b/miasm2/arch/arm/jit.py @@ -8,6 +8,7 @@ from miasm2.jitter.codegen import CGen from miasm2.expression.expression import ExprId, ExprAff, ExprCond from miasm2.ir.ir import IRBlock, AssignBlock from miasm2.ir.translators.C import TranslatorC +from miasm2.expression.simplifications import expr_simp_high_to_explicit log = logging.getLogger('jit_arm') hnd = logging.StreamHandler() @@ -45,6 +46,15 @@ class arm_CGen(CGen): irblock_head = self.assignblk_to_irbloc(instr, assignblk_head) irblocks = [irblock_head] + assignblks_extra + + # Simplify high level operators + out = [] + for irblock in irblocks: + new_irblock = irblock.simplify(expr_simp_high_to_explicit)[1] + out.append(new_irblock) + irblocks = out + + for irblock in irblocks: assert irblock.dst is not None irblocks_list.append(irblocks) |