about summary refs log tree commit diff stats
path: root/miasm2/core
diff options
context:
space:
mode:
authorCamille Mougey <commial@gmail.com>2017-06-06 12:24:31 +0200
committerGitHub <noreply@github.com>2017-06-06 12:24:31 +0200
commit443a811aa92a31d3c2ae89937c5abb497bcc30ff (patch)
tree70937e30d5475f1c0b137ffc343e312323c50970 /miasm2/core
parentb772f2d9c7aceb7d1ca87cdefd708d4f65d71623 (diff)
parentded504718e83ffcc63ef42cc27159ef998ed211b (diff)
downloadmiasm-443a811aa92a31d3c2ae89937c5abb497bcc30ff.tar.gz
miasm-443a811aa92a31d3c2ae89937c5abb497bcc30ff.zip
Merge pull request #522 from serpilliere/ir_ro
Ir ro
Diffstat (limited to 'miasm2/core')
-rw-r--r--miasm2/core/asmblock.py2
-rw-r--r--miasm2/core/sembuilder.py24
2 files changed, 19 insertions, 7 deletions
diff --git a/miasm2/core/asmblock.py b/miasm2/core/asmblock.py
index 72f259f9..965b22c4 100644
--- a/miasm2/core/asmblock.py
+++ b/miasm2/core/asmblock.py
@@ -45,7 +45,7 @@ class AsmLabel(object):
         self.name = name
         self.attrib = None
         if offset is None:
-            self.offset = offset
+            self.offset = None
         else:
             self.offset = int(offset)
 
diff --git a/miasm2/core/sembuilder.py b/miasm2/core/sembuilder.py
index 138e4552..8d6d3e07 100644
--- a/miasm2/core/sembuilder.py
+++ b/miasm2/core/sembuilder.py
@@ -5,7 +5,7 @@ import ast
 import re
 
 import miasm2.expression.expression as m2_expr
-from miasm2.ir.ir import IRBlock
+from miasm2.ir.ir import IRBlock, AssignBlock
 
 
 class MiasmTransformer(ast.NodeTransformer):
@@ -127,6 +127,7 @@ class SemBuilder(object):
         self.transformer = MiasmTransformer()
         self._ctx = dict(m2_expr.__dict__)
         self._ctx["IRBlock"] = IRBlock
+        self._ctx["AssignBlock"] = AssignBlock
         self._functions = {}
 
         # Update context
@@ -246,20 +247,31 @@ class SemBuilder(object):
                                        starargs=None,
                                        kwargs=None)
                     sub_blocks[-1][-1].append(jmp_end)
-                    sub_blocks[-1][-1] = ast.List(elts=sub_blocks[-1][-1],
-                                                  ctx=ast.Load())
-                    sub_blocks[-1] = ast.List(elts=sub_blocks[-1],
-                                              ctx=ast.Load())
+
+
+                    instr = ast.Name(id='instr', ctx=ast.Load())
+                    effects = ast.List(elts=sub_blocks[-1][-1],
+                                       ctx=ast.Load())
+                    assignblk = ast.Call(func=ast.Name(id='AssignBlock',
+                                                       ctx=ast.Load()),
+                                         args=[effects, instr],
+                                         keywords=[],
+                                         starargs=None,
+                                         kwargs=None)
+
 
                     ## Replace the block with a call to 'IRBlock'
                     lbl_if_name = ast.Attribute(value=ast.Name(id=lbl_name,
                                                                ctx=ast.Load()),
                                                 attr='name', ctx=ast.Load())
 
+                    assignblks = ast.List(elts=[assignblk],
+                                          ctx=ast.Load())
+
                     sub_blocks[-1] = ast.Call(func=ast.Name(id='IRBlock',
                                                             ctx=ast.Load()),
                                               args=[lbl_if_name,
-                                                    sub_blocks[-1]],
+                                                    assignblks],
                                               keywords=[],
                                               starargs=None,
                                               kwargs=None)