about summary refs log tree commit diff stats
path: root/miasm/analysis/cst_propag.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm/analysis/cst_propag.py')
-rw-r--r--miasm/analysis/cst_propag.py36
1 files changed, 18 insertions, 18 deletions
diff --git a/miasm/analysis/cst_propag.py b/miasm/analysis/cst_propag.py
index dd7733b0..cdb62d3c 100644
--- a/miasm/analysis/cst_propag.py
+++ b/miasm/analysis/cst_propag.py
@@ -19,8 +19,8 @@ class SymbExecState(SymbolicExecutionEngine):
     """
     State manager for SymbolicExecution
     """
-    def __init__(self, ir_arch, ircfg, state):
-        super(SymbExecState, self).__init__(ir_arch, {})
+    def __init__(self, lifter, ircfg, state):
+        super(SymbExecState, self).__init__(lifter, {})
         self.set_state(state)
 
 
@@ -40,16 +40,16 @@ def add_state(ircfg, todo, states, addr, state):
         states[addr] = states[addr].merge(state)
 
 
-def is_expr_cst(ir_arch, expr):
+def is_expr_cst(lifter, expr):
     """Return true if @expr is only composed of ExprInt and init_regs
-    @ir_arch: IR instance
+    @lifter: Lifter instance
     @expr: Expression to test"""
 
     elements = expr.get_r(mem_read=True)
     for element in elements:
         if element.is_mem():
             continue
-        if element.is_id() and element in ir_arch.arch.regs.all_regs_ids_init:
+        if element.is_id() and element in lifter.arch.regs.all_regs_ids_init:
             continue
         if element.is_int():
             continue
@@ -65,11 +65,11 @@ class SymbExecStateFix(SymbolicExecutionEngine):
 
     """
     # Function used to test if an Expression is considered as a constant
-    is_expr_cst = lambda _, ir_arch, expr: is_expr_cst(ir_arch, expr)
+    is_expr_cst = lambda _, lifter, expr: is_expr_cst(lifter, expr)
 
-    def __init__(self, ir_arch, ircfg, state, cst_propag_link):
+    def __init__(self, lifter, ircfg, state, cst_propag_link):
         self.ircfg = ircfg
-        super(SymbExecStateFix, self).__init__(ir_arch, {})
+        super(SymbExecStateFix, self).__init__(lifter, {})
         self.set_state(state)
         self.cst_propag_link = cst_propag_link
 
@@ -83,7 +83,7 @@ class SymbExecStateFix(SymbolicExecutionEngine):
             if not element.is_id():
                 continue
             value = self.eval_expr(element)
-            if self.is_expr_cst(self.ir_arch, value):
+            if self.is_expr_cst(self.lifter, value):
                 to_propag[element] = value
         return expr_simp(expr.replace_expr(to_propag))
 
@@ -116,13 +116,13 @@ class SymbExecStateFix(SymbolicExecutionEngine):
         self.ircfg.blocks[irb.loc_key] = IRBlock(irb.loc_db, irb.loc_key, assignblks)
 
 
-def compute_cst_propagation_states(ir_arch, ircfg, init_addr, init_infos):
+def compute_cst_propagation_states(lifter, ircfg, init_addr, init_infos):
     """
     Propagate "constant expressions" in a function.
     The attribute "constant expression" is true if the expression is based on
     constants or "init" regs values.
 
-    @ir_arch: Lifter instance
+    @lifter: Lifter instance
     @init_addr: analysis start address
     @init_infos: dictionary linking expressions to their values at @init_addr
     """
@@ -144,9 +144,9 @@ def compute_cst_propagation_states(ir_arch, ircfg, init_addr, init_infos):
         if lbl not in ircfg.blocks:
             continue
 
-        symbexec_engine = SymbExecState(ir_arch, ircfg, state)
+        symbexec_engine = SymbExecState(lifter, ircfg, state)
         addr = symbexec_engine.run_block_at(ircfg, lbl)
-        symbexec_engine.del_mem_above_stack(ir_arch.sp)
+        symbexec_engine.del_mem_above_stack(lifter.sp)
 
         for dst in possible_values(addr):
             value = dst.value
@@ -163,23 +163,23 @@ def compute_cst_propagation_states(ir_arch, ircfg, init_addr, init_infos):
     return states
 
 
-def propagate_cst_expr(ir_arch, ircfg, addr, init_infos):
+def propagate_cst_expr(lifter, ircfg, addr, init_infos):
     """
-    Propagate "constant expressions" in a @ir_arch.
+    Propagate "constant expressions" in a @lifter.
     The attribute "constant expression" is true if the expression is based on
     constants or "init" regs values.
 
-    @ir_arch: Lifter instance
+    @lifter: Lifter instance
     @addr: analysis start address
     @init_infos: dictionary linking expressions to their values at @init_addr
 
     Returns a mapping between replaced Expression and their new values.
     """
-    states = compute_cst_propagation_states(ir_arch, ircfg, addr, init_infos)
+    states = compute_cst_propagation_states(lifter, ircfg, addr, init_infos)
     cst_propag_link = {}
     for lbl, state in viewitems(states):
         if lbl not in ircfg.blocks:
             continue
-        symbexec = SymbExecStateFix(ir_arch, ircfg, state, cst_propag_link)
+        symbexec = SymbExecStateFix(lifter, ircfg, state, cst_propag_link)
         symbexec.eval_updt_irblock(ircfg.blocks[lbl])
     return cst_propag_link