Trait yaxpeax_core::analyses::value_range::ConditionalBoundInference[][src]

pub trait ConditionalBoundInference<A: Arch + SSAValues, U> {
    fn conditional_source_for(
        conditional_instr: &A::Instruction,
        conditional_addr: A::Address,
        dfg: &SSA<A>
    ) -> Option<(A::Address, DefSource<A::Address>)>;
fn infer_conditional_bounds(
        curr_block: A::Address,
        test_instr: &A::Instruction,
        test_addr: A::Address,
        conditional_instr: &A::Instruction,
        conditional_addr: A::Address,
        cfg: &ControlFlowGraph<A::Address>,
        dfg: &SSA<A>,
        aux_data: &mut U
    ) -> bool;
fn inferrable_conditional(conditional_instr: &A::Instruction) -> bool; fn add_conditional_bounds<M: MemoryRange<A>>(
        block_start: A::Address,
        conditional: A::Address,
        conditional_instr: &A::Instruction,
        cfg: &ControlFlowGraph<A::Address>,
        dfg: &SSA<A>,
        data: &M,
        aux_data: &mut U
    ) -> bool
    where
        A: DecodeFrom<M>
, { ... } }

Required methods

Finds the instruction responsible for the condition that conditional_instr branches on. For some architectures, this may be a ways earlier in the program. For others, this may simply be “the conditional instruction”.

This yadda yadda’s the good stuff. Given a conditional instruction, and instruction that decides its conditionality (these may be the same!) apply bounds to the program for control-depndent edges.

Is the instruction in question one that an implementor might want to look at?

Provided methods

Implementors