pub struct HighLevelILFunction { /* private fields */ }
Implementations§
source§impl HighLevelILFunction
impl HighLevelILFunction
pub fn instruction_from_index( &self, index: HighLevelInstructionIndex, ) -> Option<HighLevelILInstruction>
pub fn instruction_from_expr_index( &self, expr_index: HighLevelInstructionIndex, ) -> Option<HighLevelILInstruction>
pub fn root_instruction_index(&self) -> HighLevelInstructionIndex
pub fn root(&self) -> HighLevelILInstruction
pub fn set_root(&self, new_root: &HighLevelILInstruction)
pub fn instruction_count(&self) -> usize
pub fn expression_count(&self) -> usize
pub fn ssa_form(&self) -> HighLevelILFunction
pub fn function(&self) -> Ref<Function>
pub fn basic_blocks(&self) -> Array<BasicBlock<HighLevelILBlock>>
pub fn as_ast(&self) -> Ref<HighLevelILFunction>
pub fn as_non_ast(&self) -> Ref<HighLevelILFunction>
pub fn current_address(&self) -> Location
pub fn set_current_address(&self, location: impl Into<Location>)
sourcepub fn ssa_variable_definition(
&self,
variable: SSAVariable,
) -> Option<HighLevelILInstruction>
pub fn ssa_variable_definition( &self, variable: SSAVariable, ) -> Option<HighLevelILInstruction>
Gets the instruction that contains the given SSA variable’s definition.
Since SSA variables can only be defined once, this will return the single instruction where that occurs. For SSA variable version 0s, which don’t have definitions, this will return None instead.
pub fn ssa_memory_definition( &self, version: usize, ) -> Option<HighLevelILInstruction>
sourcepub fn ssa_variable_uses(
&self,
variable: SSAVariable,
) -> Array<HighLevelILInstruction>
pub fn ssa_variable_uses( &self, variable: SSAVariable, ) -> Array<HighLevelILInstruction>
Gets all the instructions that use the given SSA variable.
pub fn ssa_memory_uses(&self, version: usize) -> Array<HighLevelILInstruction>
sourcepub fn is_ssa_variable_live(&self, variable: SSAVariable) -> bool
pub fn is_ssa_variable_live(&self, variable: SSAVariable) -> bool
Determines if variable
is live at any point in the function
sourcepub fn is_ssa_variable_live_at(
&self,
variable: SSAVariable,
instr: &HighLevelILInstruction,
) -> bool
pub fn is_ssa_variable_live_at( &self, variable: SSAVariable, instr: &HighLevelILInstruction, ) -> bool
Determines if variable
is live at a given point in the function
pub fn variable_definitions( &self, variable: Variable, ) -> Array<HighLevelILInstruction>
pub fn variable_uses(&self, variable: Variable) -> Array<HighLevelILInstruction>
sourcepub fn is_variable_live_at(
&self,
variable: Variable,
instr: &HighLevelILInstruction,
) -> bool
pub fn is_variable_live_at( &self, variable: Variable, instr: &HighLevelILInstruction, ) -> bool
Determines if variable
is live at a given point in the function
sourcepub fn variables(&self) -> Array<Variable>
pub fn variables(&self) -> Array<Variable>
This gets just the HLIL variables - you may be interested in the union
of Function::parameter_variables
and HighLevelILFunction::aliased_variables
as well for all the
variables used in the function
sourcepub fn aliased_variables(&self) -> Array<Variable>
pub fn aliased_variables(&self) -> Array<Variable>
This returns a list of Variables that are taken reference to and used
elsewhere. You may also wish to consider HighLevelILFunction::variables
and Function::parameter_variables
sourcepub fn ssa_variables(&self, variable: &Variable) -> Array<SSAVariable>
pub fn ssa_variables(&self, variable: &Variable) -> Array<SSAVariable>
This gets the HLIL SSA variables for a given Variable
.