summaryrefslogtreecommitdiff
path: root/rust/src/low_level_il/function.rs
diff options
context:
space:
mode:
authorMason Reed <35282038+emesare@users.noreply.github.com>2025-12-10 17:18:28 -0500
committerGitHub <noreply@github.com>2025-12-10 17:18:28 -0500
commit59b73aa1834d5f558595a888411c70a4fac31a3f (patch)
treebd19185a3f8c421ea11d1df20ea41bd00c078045 /rust/src/low_level_il/function.rs
parent0ec8e7d31dcd5c38498ac473db46e3b55883edd2 (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.rs33
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;