pub struct Operation<'func, M, F, O>{ /* private fields */ }
Implementations§
source§impl<'func, M, F, O> Operation<'func, M, F, O>
impl<'func, M, F, O> Operation<'func, M, F, O>
pub fn address(&self) -> u64
sourcepub unsafe fn get_operand(&self, idx: usize) -> u64
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>where
M: FunctionMutability,
O: OperationArguments,
impl<M, O> Operation<'_, M, NonSSA, O>where
M: FunctionMutability,
O: OperationArguments,
sourcepub fn flag_write(&self) -> Option<CoreFlagWrite>
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>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, Pop>where
M: FunctionMutability,
F: FunctionForm,
source§impl<'func, M, F> Operation<'func, M, F, SyscallSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, SyscallSsa>where
M: FunctionMutability,
F: FunctionForm,
sourcepub fn output_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn output_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
Get the output expression of the call.
NOTE: This is currently always CallOutputSsa
.
sourcepub fn param_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn param_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
Get the parameter expression of the call.
NOTE: This is currently always CallParamSsa
.
sourcepub fn stack_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
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>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, Intrinsic>where
M: FunctionMutability,
F: FunctionForm,
pub fn intrinsic(&self) -> Option<CoreIntrinsic>
sourcepub fn outputs(&self) -> Vec<IntrinsicOutput>
pub fn outputs(&self) -> Vec<IntrinsicOutput>
Get the output list.
sourcepub fn inputs(&self) -> LowLevelILExpression<'_, M, F, ValueExpr>
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>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, SetReg>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn dest_reg(&self) -> LowLevelILRegisterKind<CoreRegister>
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, SetRegSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, SetRegSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn dest_reg(&self) -> LowLevelILSSARegisterKind<CoreRegister>
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, SetRegPartialSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, SetRegPartialSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn dest_reg(&self) -> LowLevelILSSARegisterKind<CoreRegister>
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, SetRegSplit>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, SetRegSplit>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn dest_reg_high(&self) -> LowLevelILRegisterKind<CoreRegister>
pub fn dest_reg_low(&self) -> LowLevelILRegisterKind<CoreRegister>
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, SetRegSplitSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, SetRegSplitSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
sourcepub fn dest_expr_high(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
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
.
sourcepub fn dest_expr_low(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
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
.
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, SetFlag>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, SetFlag>where
M: FunctionMutability,
F: FunctionForm,
pub fn dest_flag(&self) -> CoreFlag
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, SetFlagSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, SetFlagSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn dest_flag(&self) -> LowLevelILSSAFlag<CoreFlag>
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, Load>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, Load>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, LoadSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, LoadSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn source_memory_version(&self) -> u64
source§impl<'func, M, F> Operation<'func, M, F, Store>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, Store>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn dest_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, StoreSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, StoreSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn dest_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn dest_memory_version(&self) -> u64
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn source_memory_version(&self) -> u64
source§impl<M, F> Operation<'_, M, F, Reg>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, Reg>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn source_reg(&self) -> LowLevelILRegisterKind<CoreRegister>
source§impl<M, F> Operation<'_, M, F, RegSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, RegSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn source_reg(&self) -> LowLevelILSSARegisterKind<CoreRegister>
source§impl<M, F> Operation<'_, M, F, RegPartialSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, RegPartialSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn source_reg(&self) -> LowLevelILSSARegisterKind<CoreRegister>
source§impl<M, F> Operation<'_, M, F, RegSplit>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, RegSplit>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn low_reg(&self) -> LowLevelILRegisterKind<CoreRegister>
pub fn high_reg(&self) -> LowLevelILRegisterKind<CoreRegister>
source§impl<M, F> Operation<'_, M, F, RegSplitSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, RegSplitSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn low_reg(&self) -> LowLevelILSSARegisterKind<CoreRegister>
pub fn high_reg(&self) -> LowLevelILSSARegisterKind<CoreRegister>
source§impl<'func, M, F> Operation<'func, M, F, RegStackPush>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, RegStackPush>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn dest_reg_stack(&self) -> CoreRegisterStack
pub fn source_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<M, F> Operation<'_, M, F, RegStackPop>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, RegStackPop>where
M: FunctionMutability,
F: FunctionForm,
pub fn size(&self) -> usize
pub fn source_reg_stack(&self) -> CoreRegisterStack
source§impl<M, F> Operation<'_, M, F, RegStackFreeReg>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, RegStackFreeReg>where
M: FunctionMutability,
F: FunctionForm,
source§impl<M, F> Operation<'_, M, F, Flag>where
M: FunctionMutability,
F: FunctionForm,
impl<M, F> Operation<'_, M, F, Flag>where
M: FunctionMutability,
F: FunctionForm,
pub fn source_flag(&self) -> CoreFlag
source§impl<'func, M, F> Operation<'func, M, F, Jump>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, Jump>where
M: FunctionMutability,
F: FunctionForm,
pub fn target(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
source§impl<'func, M, F> Operation<'func, M, F, JumpTo>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, JumpTo>where
M: FunctionMutability,
F: FunctionForm,
pub fn target(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn target_list(&self) -> BTreeMap<u64, LowLevelInstructionIndex>
source§impl<'func, M, F> Operation<'func, M, F, Call>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, Call>where
M: FunctionMutability,
F: FunctionForm,
pub fn target(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn stack_adjust(&self) -> Option<u64>
source§impl<'func, M, F> Operation<'func, M, F, CallSsa>where
M: FunctionMutability,
F: FunctionForm,
impl<'func, M, F> Operation<'func, M, F, CallSsa>where
M: FunctionMutability,
F: FunctionForm,
pub fn target(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
sourcepub fn output_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn output_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
Get the output expression of the call.
NOTE: This is currently always CallOutputSsa
.
sourcepub fn param_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn param_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
Get the parameter expression of the call.
NOTE: This is currently always CallParamSsa
.
sourcepub fn stack_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
pub fn stack_expr(&self) -> LowLevelILExpression<'func, M, F, ValueExpr>
Get the stack expression of the call.
NOTE: This is currently always CallStackSsa
.