diff options
Diffstat (limited to 'rust/src/low_level_il/instruction.rs')
| -rw-r--r-- | rust/src/low_level_il/instruction.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/rust/src/low_level_il/instruction.rs b/rust/src/low_level_il/instruction.rs index df9d1839..ba8184e4 100644 --- a/rust/src/low_level_il/instruction.rs +++ b/rust/src/low_level_il/instruction.rs @@ -101,6 +101,35 @@ where } } +impl<'func, M> LowLevelILInstruction<'func, M, NonSSA> +where + M: FunctionMutability, +{ + pub fn ssa_form( + &self, + ssa: &'func LowLevelILFunction<M, SSA>, + ) -> LowLevelILInstruction<'func, M, SSA> { + use binaryninjacore_sys::BNGetLowLevelILSSAInstructionIndex; + let idx = unsafe { BNGetLowLevelILSSAInstructionIndex(self.function.handle, self.index.0) }; + LowLevelILInstruction::new(ssa, LowLevelInstructionIndex(idx)) + } +} + +impl<'func, M> LowLevelILInstruction<'func, M, SSA> +where + M: FunctionMutability, +{ + pub fn non_ssa_form( + &self, + non_ssa: &'func LowLevelILFunction<M, NonSSA>, + ) -> LowLevelILInstruction<'func, M, NonSSA> { + use binaryninjacore_sys::BNGetLowLevelILNonSSAInstructionIndex; + let idx = + unsafe { BNGetLowLevelILNonSSAInstructionIndex(self.function.handle, self.index.0) }; + LowLevelILInstruction::new(non_ssa, LowLevelInstructionIndex(idx)) + } +} + impl<M, F> Debug for LowLevelILInstruction<'_, M, F> where M: FunctionMutability, |
