about summary refs log tree commit diff stats
path: root/miasm/jitter/jitcore.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm/jitter/jitcore.py')
-rw-r--r--miasm/jitter/jitcore.py31
1 files changed, 18 insertions, 13 deletions
diff --git a/miasm/jitter/jitcore.py b/miasm/jitter/jitcore.py
index a6c9dda6..434854ca 100644
--- a/miasm/jitter/jitcore.py
+++ b/miasm/jitter/jitcore.py
@@ -37,15 +37,15 @@ class JitCore(object):
     jitted_block_delete_cb = None
     jitted_block_max_size = 10000
 
-    def __init__(self, ir_arch, bin_stream):
+    def __init__(self, lifter, bin_stream):
         """Initialise a JitCore instance.
-        @ir_arch: ir instance for current architecture
+        @lifter: Lifter instance for current architecture
         @bin_stream: bin_stream instance
         """
         # Arch related
-        self.ir_arch = ir_arch
-        self.ircfg = self.ir_arch.new_ircfg()
-        self.arch_name = "%s%s" % (self.ir_arch.arch.name, self.ir_arch.attrib)
+        self.lifter = lifter
+        self.ircfg = self.lifter.new_ircfg()
+        self.arch_name = "%s%s" % (self.lifter.arch.name, self.lifter.attrib)
 
         # Structures for block tracking
         self.offset_to_jitted_func = BoundedDict(self.jitted_block_max_size,
@@ -64,14 +64,19 @@ class JitCore(object):
         # Disassembly Engine
         self.split_dis = set()
         self.mdis = disasmEngine(
-            ir_arch.arch, ir_arch.attrib, bin_stream,
+            lifter.arch, lifter.attrib, bin_stream,
             lines_wd=self.options["jit_maxline"],
-            loc_db=ir_arch.loc_db,
+            loc_db=lifter.loc_db,
             follow_call=False,
             dontdis_retcall=False,
             split_dis=self.split_dis,
         )
 
+    @property
+    def ir_arch(self):
+        warnings.warn('DEPRECATION WARNING: use ".lifter" instead of ".ir_arch"')
+        return self.lifter
+
 
     def set_options(self, **kwargs):
         "Set options relative to the backend"
@@ -104,7 +109,7 @@ class JitCore(object):
             cur_block.ad_max = cur_block.lines[-1].offset + cur_block.lines[-1].l
         else:
             # 1 byte block for unknown mnemonic
-            offset = self.ir_arch.loc_db.get_location_offset(cur_block.loc_key)
+            offset = self.lifter.loc_db.get_location_offset(cur_block.loc_key)
             cur_block.ad_min = offset
             cur_block.ad_max = offset+1
 
@@ -131,7 +136,7 @@ class JitCore(object):
 
         # Get the block
         if isinstance(addr, LocKey):
-            addr = self.ir_arch.loc_db.get_location_offset(addr)
+            addr = self.lifter.loc_db.get_location_offset(addr)
             if addr is None:
                 raise RuntimeError("Unknown offset for LocKey")
 
@@ -172,7 +177,7 @@ class JitCore(object):
         """
 
         if offset is None:
-            offset = getattr(cpu, self.ir_arch.pc.name)
+            offset = getattr(cpu, self.lifter.pc.name)
 
         if offset not in self.offset_to_jitted_func:
             # Need to JiT the block
@@ -237,13 +242,13 @@ class JitCore(object):
             try:
                 for irblock in block.blocks:
                     # Remove offset -> jitted block link
-                    offset = self.ir_arch.loc_db.get_location_offset(irblock.loc_key)
+                    offset = self.lifter.loc_db.get_location_offset(irblock.loc_key)
                     if offset in self.offset_to_jitted_func:
                         del(self.offset_to_jitted_func[offset])
 
             except AttributeError:
                 # The block has never been translated in IR
-                offset = self.ir_arch.loc_db.get_location_offset(block.loc_key)
+                offset = self.lifter.loc_db.get_location_offset(block.loc_key)
                 if offset in self.offset_to_jitted_func:
                     del(self.offset_to_jitted_func[offset])
 
@@ -280,7 +285,7 @@ class JitCore(object):
         @block: asmblock
         """
         block_raw = b"".join(line.b for line in block.lines)
-        offset = self.ir_arch.loc_db.get_location_offset(block.loc_key)
+        offset = self.lifter.loc_db.get_location_offset(block.loc_key)
         block_hash = md5(
             b"%X_%s_%s_%s_%s" % (
                 offset,