binaryninja::low_level_il::operation

Struct Operation

source
pub struct Operation<'func, M, F, O>{ /* private fields */ }

Implementations§

source§

impl<'func, M, F, O> Operation<'func, M, F, O>

source

pub fn address(&self) -> u64

source

pub unsafe fn get_operand(&self, idx: usize) -> u64

Get the raw operand from the operand list.

This has no type information associated with it. It’s up to the caller to know what the correct type of the underlying u64 should be.

§Panic

idx must be less than 4. This is to protect against an out of bounds access.

§Safety

Even if idx is valid, it may index to an uninitialized or unused value. Make sure you index into an operand that you know should be initialized properly.

source§

impl<M, O> Operation<'_, M, NonSSA, O>

source

pub fn flag_write(&self) -> Option<CoreFlagWrite>

Get the CoreFlagWrite for the operation.

NOTE: This is only expected to be present for lifted IL.

source§

impl<M, F> Operation<'_, M, F, Pop>

source

pub fn size(&self) -> usize

source§

impl<'func, M, F> Operation<'func, M, F, SyscallSsa>

source

pub fn output_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

Get the output expression of the call.

NOTE: This is currently always CallOutputSsa.

source

pub fn param_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

Get the parameter expression of the call.

NOTE: This is currently always CallParamSsa.

source

pub fn stack_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

Get the stack expression of the call.

NOTE: This is currently always CallStackSsa.

source§

impl<M, F> Operation<'_, M, F, Intrinsic>

source

pub fn intrinsic(&self) -> Option<CoreIntrinsic>

source

pub fn outputs(&self) -> Vec<IntrinsicOutput>

Get the output list.

source

pub fn inputs(&self) -> LowLevelILExpression<'_, M, F, ValueExpr>

Get the input list for the intrinsic.

This will just be a CallParamSsa expression.

source§

impl<'func, M, F> Operation<'func, M, F, SetReg>

source§

impl<'func, M, F> Operation<'func, M, F, SetRegSsa>

source§

impl<'func, M, F> Operation<'func, M, F, SetRegPartialSsa>

source§

impl<'func, M, F> Operation<'func, M, F, SetRegSplit>

source§

impl<'func, M, F> Operation<'func, M, F, SetRegSplitSsa>

source

pub fn size(&self) -> usize

source

pub fn dest_expr_high(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

Because of the fixed operand list size we use another expression for the dest high register.

NOTE: This should always be an expression of RegSsa.

source

pub fn dest_expr_low(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

Because of the fixed operand list size we use another expression for the dest low register.

NOTE: This should always be an expression of RegSsa.

source

pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, SetFlag>

source

pub fn dest_flag(&self) -> CoreFlag

source

pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, SetFlagSsa>

source§

impl<'func, M, F> Operation<'func, M, F, Load>

source

pub fn size(&self) -> usize

source

pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, LoadSsa>

source

pub fn size(&self) -> usize

source

pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn source_memory_version(&self) -> u64

source§

impl<'func, M, F> Operation<'func, M, F, Store>

source

pub fn size(&self) -> usize

source

pub fn dest_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, StoreSsa>

source

pub fn size(&self) -> usize

source

pub fn dest_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn dest_memory_version(&self) -> u64

source

pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn source_memory_version(&self) -> u64

source§

impl<M, F> Operation<'_, M, F, Reg>

source§

impl<M, F> Operation<'_, M, F, RegSsa>

source§

impl<M, F> Operation<'_, M, F, RegPartialSsa>

source§

impl<M, F> Operation<'_, M, F, RegSplit>

source§

impl<M, F> Operation<'_, M, F, RegSplitSsa>

source§

impl<'func, M, F> Operation<'func, M, F, RegStackPush>

source

pub fn size(&self) -> usize

source

pub fn dest_reg_stack(&self) -> CoreRegisterStack

source

pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<M, F> Operation<'_, M, F, RegStackPop>

source

pub fn size(&self) -> usize

source

pub fn source_reg_stack(&self) -> CoreRegisterStack

source§

impl<M, F> Operation<'_, M, F, RegStackFreeReg>

source

pub fn size(&self) -> usize

source

pub fn dest_reg(&self) -> CoreRegister

source§

impl<M, F> Operation<'_, M, F, Flag>

source

pub fn source_flag(&self) -> CoreFlag

source§

impl<'func, M, F> Operation<'func, M, F, Jump>

source

pub fn target(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, JumpTo>

source§

impl<'func, M, F> Operation<'func, M, F, Call>

source

pub fn target(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn stack_adjust(&self) -> Option<u64>

source§

impl<'func, M, F> Operation<'func, M, F, CallSsa>

source

pub fn target(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn output_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

Get the output expression of the call.

NOTE: This is currently always CallOutputSsa.

source

pub fn param_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

Get the parameter expression of the call.

NOTE: This is currently always CallParamSsa.

source

pub fn stack_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

Get the stack expression of the call.

NOTE: This is currently always CallStackSsa.

source§

impl<M, F> Operation<'_, M, F, CallOutputSsa>

source§

impl<'func, M, F> Operation<'func, M, F, CallParamSsa>

source

pub fn param_exprs(&self) -> Vec<LowLevelILExpression<'func, M, F, ValueExpr>>

source§

impl<M, F> Operation<'_, M, F, CallStackSsa>

source§

impl<'func, M, F> Operation<'func, M, F, Ret>

source

pub fn target(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, If>

source

pub fn condition(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn true_target(&self) -> LowLevelILInstruction<'func, M, F>

source

pub fn false_target(&self) -> LowLevelILInstruction<'func, M, F>

source§

impl<'func, M, F> Operation<'func, M, F, Goto>

source

pub fn target(&self) -> LowLevelILInstruction<'func, M, F>

source§

impl<M, F> Operation<'_, M, F, FlagGroup>

source§

impl<M, F> Operation<'_, M, F, Trap>

source

pub fn vector(&self) -> u64

source§

impl<M, F> Operation<'_, M, F, RegPhi>

source§

impl<M, F> Operation<'_, M, F, FlagPhi>

source§

impl<M, F> Operation<'_, M, F, MemPhi>

source§

impl<M, F> Operation<'_, M, F, Const>

source

pub fn size(&self) -> usize

source

pub fn value(&self) -> u64

source§

impl<M, F> Operation<'_, M, F, FloatConst>

source

pub fn size(&self) -> usize

source

pub fn raw_value(&self) -> u64

source

pub fn float_value(&self) -> f64

source§

impl<M, F> Operation<'_, M, F, Extern>

source

pub fn size(&self) -> usize

source

pub fn value(&self) -> u64

source§

impl<'func, M, F> Operation<'func, M, F, BinaryOp>

source

pub fn size(&self) -> usize

source

pub fn left(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn right(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, BinaryOpCarry>

source

pub fn size(&self) -> usize

source

pub fn left(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn right(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn carry(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, UnaryOp>

source

pub fn size(&self) -> usize

source

pub fn operand(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, Condition>

source

pub fn size(&self) -> usize

source

pub fn left(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source

pub fn right(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<'func, M, F> Operation<'func, M, F, UnimplMem>

source

pub fn size(&self) -> usize

source

pub fn mem_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>

source§

impl<M, F> Operation<'_, M, F, Assert>

source§

impl<M, F> Operation<'_, M, F, AssertSsa>

source§

impl<M, F> Operation<'_, M, F, ForceVersion>

source§

impl<M, F> Operation<'_, M, F, ForceVersionSsa>

source§

impl<'func, M, F> Operation<'func, M, F, SeparateParamListSsa>

source

pub fn param_exprs(&self) -> Vec<LowLevelILExpression<'func, M, F, ValueExpr>>

Trait Implementations§

source§

impl<M, F> Debug for Operation<'_, M, F, Assert>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, AssertSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, BinaryOp>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, BinaryOpCarry>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Call>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, CallOutputSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, CallParamSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, CallSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, CallStackSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Condition>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Const>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Extern>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Flag>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, FlagBit>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, FlagCond>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, FlagGroup>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, FlagPhi>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, FloatConst>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, ForceVersion>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, ForceVersionSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Goto>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, If>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Intrinsic>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Jump>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, JumpTo>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Load>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, LoadSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, MemPhi>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, NoArgs>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Pop>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Reg>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, RegPartialSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, RegPhi>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, RegSplit>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, RegSplitSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, RegSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, RegStackFreeReg>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, RegStackPop>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, RegStackPush>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Ret>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SeparateParamListSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SetFlag>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SetFlagSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SetReg>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SetRegPartialSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SetRegSplit>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SetRegSplitSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SetRegSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Store>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, StoreSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Syscall>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, SyscallSsa>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, Trap>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, UnaryOp>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<M, F> Debug for Operation<'_, M, F, UnimplMem>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'func, M, F, O> Freeze for Operation<'func, M, F, O>

§

impl<'func, M, F, O> RefUnwindSafe for Operation<'func, M, F, O>

§

impl<'func, M, F, O> Send for Operation<'func, M, F, O>
where O: Send,

§

impl<'func, M, F, O> Sync for Operation<'func, M, F, O>
where O: Sync,

§

impl<'func, M, F, O> Unpin for Operation<'func, M, F, O>
where O: Unpin,

§

impl<'func, M, F, O> UnwindSafe for Operation<'func, M, F, O>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.