summaryrefslogtreecommitdiff
path: root/python/highlevelil.py
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2020-11-21 17:55:26 -0500
committerBrian Potchik <brian@vector35.com>2020-11-21 17:55:26 -0500
commitdf48a9ee65c4fa3b60f3bfebb36aa03d8dd40f2d (patch)
treec4b5686db405729323bc06659bcc74135673fe9a /python/highlevelil.py
parent20b03bd36ec247b8c28dc1643f57b21ec94c8294 (diff)
Add improved instruction mapping APIs.
Diffstat (limited to 'python/highlevelil.py')
-rw-r--r--python/highlevelil.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/python/highlevelil.py b/python/highlevelil.py
index e1d26f62..164be0e1 100644
--- a/python/highlevelil.py
+++ b/python/highlevelil.py
@@ -530,6 +530,14 @@ class HighLevelILInstruction(object):
return self.medium_level_il
@property
+ def mlils(self):
+ exprs = self.function.get_medium_level_il_expr_indexes(self._expr_index)
+ result = []
+ for expr in exprs:
+ result.append(mediumlevelil.MediumLevelILInstruction(self._function.medium_level_il.ssa_form, expr))
+ return result
+
+ @property
def low_level_il(self):
"""Low level IL form of this expression"""
if self.mlil is None:
@@ -924,6 +932,15 @@ class HighLevelILFunction(object):
return None
return result
+ def get_medium_level_il_expr_indexes(self, expr):
+ count = ctypes.c_ulonglong()
+ exprs = core.BNGetMediumLevelILExprIndexesFromHighLevelIL(self.handle, expr, count)
+ result = []
+ for i in range(0, count.value):
+ result.append(exprs[i])
+ core.BNFreeILInstructionList(exprs)
+ return result
+
def get_label(self, label_idx):
result = core.BNGetHighLevelILExprIndexForLabel(self.handle, label_idx)
if result >= core.BNGetHighLevelILExprCount(self.handle):