about summary refs log tree commit diff stats
path: root/miasm2/analysis/data_flow.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/analysis/data_flow.py')
-rw-r--r--miasm2/analysis/data_flow.py58
1 files changed, 29 insertions, 29 deletions
diff --git a/miasm2/analysis/data_flow.py b/miasm2/analysis/data_flow.py
index 746c19cb..da79cf75 100644
--- a/miasm2/analysis/data_flow.py
+++ b/miasm2/analysis/data_flow.py
@@ -26,7 +26,7 @@ class ReachingDefinitions(dict):
     IBM Thomas J. Watson Research Division,  Algorithm MK
 
     This class is usable as a dictionnary whose struture is
-    { (block, instr_index): { lvalue: set((block, instr_index)) } }
+    { (block, index): { lvalue: set((block, index)) } }
     """
 
     ir_a = None
@@ -36,12 +36,12 @@ class ReachingDefinitions(dict):
         self.ir_a = ir_a
         self.compute()
 
-    def get_definitions(self, block_lbl, instruction):
-        """Returns the dict { lvalue: set((def_block_lbl, def_instr_index)) }
-        associated with self.ir_a.@block.assignblks[@instruction]
+    def get_definitions(self, block_lbl, assignblk_index):
+        """Returns the dict { lvalue: set((def_block_lbl, def_index)) }
+        associated with self.ir_a.@block.assignblks[@assignblk_index]
         or {} if it is not yet computed
         """
-        return self.get((block_lbl, instruction), {})
+        return self.get((block_lbl, assignblk_index), {})
 
     def compute(self):
         """This is the main fixpoint"""
@@ -54,7 +54,7 @@ class ReachingDefinitions(dict):
     def process_block(self, block):
         """
         Fetch reach definitions from predecessors and propagate it to
-        the instruction in block @block.
+        the assignblk in block @block.
         """
         predecessor_state = {}
         for pred_lbl in self.ir_a.graph.predecessors(block.label):
@@ -67,26 +67,26 @@ class ReachingDefinitions(dict):
             return False
         self[(block.label, 0)] = predecessor_state
 
-        for instr_index in xrange(len(block.assignblks)):
-            modified |= self.process_instruction(block, instr_index)
+        for index in xrange(len(block.assignblks)):
+            modified |= self.process_instruction(block, index)
         return modified
 
-    def process_instruction(self, block, instr_index):
+    def process_instruction(self, block, assignblk_index):
         """
         Updates the reach definitions with values defined at
-        instruction @instr_index in block @block.
-        NB: the effect of instruction @instr_index in stored at index
-        (@block, @instr_index + 1).
+        instruction @assignblk_index in block @block.
+        NB: the effect of instruction @assignblk_index in stored at index
+        (@block, @assignblk_index + 1).
         """
 
-        instr = block.assignblks[instr_index]
-        defs = self.get_definitions(block.label, instr_index).copy()
+        instr = block.assignblks[assignblk_index]
+        defs = self.get_definitions(block.label, assignblk_index).copy()
         for lval in instr:
-            defs.update({lval: set([(block.label, instr_index)])})
+            defs.update({lval: set([(block.label, assignblk_index)])})
 
-        modified = self.get((block.label, instr_index + 1)) != defs
+        modified = self.get((block.label, assignblk_index + 1)) != defs
         if modified:
-            self[(block.label, instr_index + 1)] = defs
+            self[(block.label, assignblk_index + 1)] = defs
 
         return modified
 
@@ -148,10 +148,10 @@ class DiGraphDefUse(DiGraph):
                                         deref_mem=deref_mem)
 
     def _compute_def_use_block(self, block, reaching_defs, deref_mem=False):
-        for ind, instr in enumerate(block.assignblks):
-            instruction_reaching_defs = reaching_defs.get_definitions(block.label, ind)
-            for lval, expr in instr.iteritems():
-                self.add_node(InstrNode(block.label, ind, lval))
+        for index, assignblk in enumerate(block):
+            instruction_reaching_defs = reaching_defs.get_definitions(block.label, index)
+            for lval, expr in assignblk.iteritems():
+                self.add_node(InstrNode(block.label, index, lval))
 
                 read_vars = expr.get_r(mem_read=deref_mem)
                 if deref_mem and lval.is_mem():
@@ -159,7 +159,7 @@ class DiGraphDefUse(DiGraph):
                 for read_var in read_vars:
                     for reach in instruction_reaching_defs.get(read_var, set()):
                         self.add_data_edge(InstrNode(reach[0], reach[1], read_var),
-                                           InstrNode(block.label, ind, lval))
+                                           InstrNode(block.label, index, lval))
 
     def del_edge(self, src, dst):
         super(DiGraphDefUse, self).del_edge(src, dst)
@@ -178,12 +178,12 @@ class DiGraphDefUse(DiGraph):
         self.add_uniq_labeled_edge(src, dst, ATTR_DEP)
 
     def node2lines(self, node):
-        lbl, ind, reg = node
-        yield self.DotCellDescription(text="%s (%s)" % (lbl, ind),
+        lbl, index, reg = node
+        yield self.DotCellDescription(text="%s (%s)" % (lbl, index),
                                       attr={'align': 'center',
                                             'colspan': 2,
                                             'bgcolor': 'grey'})
-        src = self._blocks[lbl].assignblks[ind][reg]
+        src = self._blocks[lbl].assignblks[index][reg]
         line = "%s = %s" % (reg, src)
         yield self.DotCellDescription(text=line, attr={})
         yield self.DotCellDescription(text="", attr={})
@@ -223,12 +223,12 @@ def dead_simp_useful_instrs(defuse, reaching_defs):
                         useful.add(InstrNode(definition[0], definition[1], lval))
 
         # Force keeping of specific cases
-        for instr_index, instr in enumerate(block.assignblks):
-            for lval, rval in instr.iteritems():
+        for index, assignblk in enumerate(block):
+            for lval, rval in assignblk.iteritems():
                 if (lval.is_mem()
                     or ir_a.IRDst == lval
                     or rval.is_function_call()):
-                    useful.add(InstrNode(block_lbl, instr_index, lval))
+                    useful.add(InstrNode(block_lbl, index, lval))
 
     # Useful nodes dependencies
     for node in useful:
@@ -249,7 +249,7 @@ def dead_simp(ir_a):
     useful = set(dead_simp_useful_instrs(defuse, reaching_defs))
     for block in ir_a.blocks.itervalues():
         irs = []
-        for idx, assignblk in enumerate(block.assignblks):
+        for idx, assignblk in enumerate(block):
             new_assignblk = dict(assignblk)
             for lval in assignblk:
                 if InstrNode(block.label, idx, lval) not in useful: