summaryrefslogtreecommitdiff
path: root/rust/src/mlil/function.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/src/mlil/function.rs')
-rw-r--r--rust/src/mlil/function.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/rust/src/mlil/function.rs b/rust/src/mlil/function.rs
index 16cc5102..0b662578 100644
--- a/rust/src/mlil/function.rs
+++ b/rust/src/mlil/function.rs
@@ -2,6 +2,7 @@ use core::hash::{Hash, Hasher};
use binaryninjacore_sys::BNFreeMediumLevelILFunction;
use binaryninjacore_sys::BNGetMediumLevelILBasicBlockList;
+use binaryninjacore_sys::BNGetMediumLevelILIndexForInstruction;
use binaryninjacore_sys::BNGetMediumLevelILInstructionCount;
use binaryninjacore_sys::BNGetMediumLevelILOwnerFunction;
use binaryninjacore_sys::BNGetMediumLevelILSSAForm;
@@ -65,6 +66,19 @@ impl MediumLevelILFunction {
self.instruction_from_idx(expr_idx).lift()
}
+ pub fn instruction_from_instruction_idx(&self, instr_idx: usize) -> MediumLevelILInstruction {
+ MediumLevelILInstruction::new(self.to_owned(), unsafe {
+ BNGetMediumLevelILIndexForInstruction(self.handle, instr_idx)
+ })
+ }
+
+ pub fn lifted_instruction_from_instruction_idx(
+ &self,
+ instr_idx: usize,
+ ) -> MediumLevelILLiftedInstruction {
+ self.instruction_from_instruction_idx(instr_idx).lift()
+ }
+
pub fn instruction_count(&self) -> usize {
unsafe { BNGetMediumLevelILInstructionCount(self.handle) }
}