summaryrefslogtreecommitdiff
path: root/lowlevelil.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2017-03-10 19:21:10 -0500
committerRusty Wagner <rusty@vector35.com>2017-03-10 19:21:10 -0500
commit29be664b3c91d135b54ed34976357bb7d3413e94 (patch)
tree18f94e81f34feac3791f6f4387290e76983c4434 /lowlevelil.cpp
parenta51f7666462341f77e3223ff2b6ab218688dfa8c (diff)
Mappings between low level IL and medium level IL
Diffstat (limited to 'lowlevelil.cpp')
-rw-r--r--lowlevelil.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/lowlevelil.cpp b/lowlevelil.cpp
index 342effea..bd038b6e 100644
--- a/lowlevelil.cpp
+++ b/lowlevelil.cpp
@@ -553,6 +553,12 @@ size_t LowLevelILFunction::GetInstructionCount() const
}
+size_t LowLevelILFunction::GetExprCount() const
+{
+ return BNGetLowLevelILExprCount(m_object);
+}
+
+
void LowLevelILFunction::AddLabelForAddress(Architecture* arch, ExprId addr)
{
BNAddLowLevelILLabelForAddress(m_object, arch->GetObject(), addr);
@@ -772,3 +778,33 @@ RegisterValue LowLevelILFunction::GetExprValue(size_t expr)
BNRegisterValue value = BNGetLowLevelILExprValue(m_object, expr);
return RegisterValue::FromAPIObject(value);
}
+
+
+Ref<MediumLevelILFunction> LowLevelILFunction::GetMediumLevelIL() const
+{
+ BNMediumLevelILFunction* func = BNGetMediumLevelILForLowLevelIL(m_object);
+ if (!func)
+ return nullptr;
+ return new MediumLevelILFunction(func);
+}
+
+
+Ref<MediumLevelILFunction> LowLevelILFunction::GetMappedMediumLevelIL() const
+{
+ BNMediumLevelILFunction* func = BNGetMappedMediumLevelIL(m_object);
+ if (!func)
+ return nullptr;
+ return new MediumLevelILFunction(func);
+}
+
+
+size_t LowLevelILFunction::GetMappedMediumLevelILInstructionIndex(size_t instr) const
+{
+ return BNGetMappedMediumLevelILInstructionIndex(m_object, instr);
+}
+
+
+size_t LowLevelILFunction::GetMappedMediumLevelILExprIndex(size_t expr) const
+{
+ return BNGetMappedMediumLevelILExprIndex(m_object, expr);
+}