diff options
| author | Mason Reed <35282038+emesare@users.noreply.github.com> | 2025-12-10 17:18:28 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-10 17:18:28 -0500 |
| commit | 59b73aa1834d5f558595a888411c70a4fac31a3f (patch) | |
| tree | bd19185a3f8c421ea11d1df20ea41bd00c078045 /rust/src/low_level_il/function.rs | |
| parent | 0ec8e7d31dcd5c38498ac473db46e3b55883edd2 (diff) | |
[Rust] Add `LowLevelILSSARegister` type (#7745)
Diffstat (limited to 'rust/src/low_level_il/function.rs')
| -rw-r--r-- | rust/src/low_level_il/function.rs | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/rust/src/low_level_il/function.rs b/rust/src/low_level_il/function.rs index 837b45ef..bd5332ea 100644 --- a/rust/src/low_level_il/function.rs +++ b/rust/src/low_level_il/function.rs @@ -299,19 +299,16 @@ impl<M: FunctionMutability> LowLevelILFunction<M, SSA> { #[must_use] pub fn get_ssa_register_uses<R: ArchReg>( &self, - reg: LowLevelILSSARegisterKind<R>, + reg: impl AsRef<LowLevelILSSARegister<R>>, ) -> Vec<LowLevelILInstruction<'_, M, SSA>> { use binaryninjacore_sys::BNGetLowLevelILSSARegisterUses; - let register_id = match reg { - LowLevelILSSARegisterKind::Full { kind, .. } => kind.id(), - LowLevelILSSARegisterKind::Partial { partial_reg, .. } => partial_reg.id(), - }; + let reg = reg.as_ref(); let mut count = 0; let instrs = unsafe { BNGetLowLevelILSSARegisterUses( self.handle, - register_id.into(), - reg.version() as usize, + reg.id().into(), + reg.version as usize, &mut count, ) }; @@ -327,19 +324,12 @@ impl<M: FunctionMutability> LowLevelILFunction<M, SSA> { #[must_use] pub fn get_ssa_register_definition<R: ArchReg>( &self, - reg: &LowLevelILSSARegisterKind<R>, + reg: impl AsRef<LowLevelILSSARegister<R>>, ) -> Option<LowLevelILInstruction<'_, M, SSA>> { use binaryninjacore_sys::BNGetLowLevelILSSARegisterDefinition; - let register_id = match reg { - LowLevelILSSARegisterKind::Full { kind, .. } => kind.id(), - LowLevelILSSARegisterKind::Partial { partial_reg, .. } => partial_reg.id(), - }; + let reg = reg.as_ref(); let instr_idx = unsafe { - BNGetLowLevelILSSARegisterDefinition( - self.handle, - register_id.into(), - reg.version() as usize, - ) + BNGetLowLevelILSSARegisterDefinition(self.handle, reg.id().into(), reg.version as usize) }; self.instruction_from_index(LowLevelInstructionIndex(instr_idx)) } @@ -348,14 +338,11 @@ impl<M: FunctionMutability> LowLevelILFunction<M, SSA> { #[must_use] pub fn get_ssa_register_value<R: ArchReg>( &self, - reg: &LowLevelILSSARegisterKind<R>, + reg: impl AsRef<LowLevelILSSARegister<R>>, ) -> Option<RegisterValue> { - let register_id = match reg { - LowLevelILSSARegisterKind::Full { kind, .. } => kind.id(), - LowLevelILSSARegisterKind::Partial { partial_reg, .. } => partial_reg.id(), - }; + let reg = reg.as_ref(); let value = unsafe { - BNGetLowLevelILSSARegisterValue(self.handle, register_id.into(), reg.version() as usize) + BNGetLowLevelILSSARegisterValue(self.handle, reg.id().into(), reg.version as usize) }; if value.state == BNRegisterValueType::UndeterminedValue { return None; |
