diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-04-26 18:25:36 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-04-30 13:12:21 -0400 |
| commit | f193132145f62cac0ffeebc3ff918ebf9dd37103 (patch) | |
| tree | b17b694dc990112236537d3d07e7dd976d498dcc /rust/src/mlil/function.rs | |
| parent | 2cd83c7221f8587975bcfc7582eb5b8c73f1653e (diff) | |
Add MLIL APIs for getting by instruction index, and expose the operation size in the Rust API
Diffstat (limited to 'rust/src/mlil/function.rs')
| -rw-r--r-- | rust/src/mlil/function.rs | 14 |
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) } } |
