pub enum LowLevelILExpressionKind<'func, M, F>where
    M: FunctionMutability,
    F: FunctionForm,{
Show 90 variants
    Load(Operation<'func, M, F, Load>),
    LoadSsa(Operation<'func, M, F, LoadSsa>),
    Pop(Operation<'func, M, F, Pop>),
    Reg(Operation<'func, M, F, Reg>),
    RegSsa(Operation<'func, M, F, RegSsa>),
    RegPartialSsa(Operation<'func, M, F, RegPartialSsa>),
    RegSplit(Operation<'func, M, F, RegSplit>),
    RegSplitSsa(Operation<'func, M, F, RegSplitSsa>),
    Const(Operation<'func, M, F, Const>),
    ConstPtr(Operation<'func, M, F, Const>),
    Flag(Operation<'func, M, F, Flag>),
    FlagBit(Operation<'func, M, F, FlagBit>),
    ExternPtr(Operation<'func, M, F, Extern>),
    RegStackPop(Operation<'func, M, F, RegStackPop>),
    RegStackFreeReg(Operation<'func, M, F, RegStackPop>),
    CallOutputSsa(Operation<'func, M, F, CallOutputSsa>),
    CallParamSsa(Operation<'func, M, F, CallParamSsa>),
    CallStackSsa(Operation<'func, M, F, CallStackSsa>),
    Add(Operation<'func, M, F, BinaryOp>),
    AddOverflow(Operation<'func, M, F, BinaryOp>),
    Adc(Operation<'func, M, F, BinaryOpCarry>),
    Sub(Operation<'func, M, F, BinaryOp>),
    Sbb(Operation<'func, M, F, BinaryOpCarry>),
    And(Operation<'func, M, F, BinaryOp>),
    Or(Operation<'func, M, F, BinaryOp>),
    Xor(Operation<'func, M, F, BinaryOp>),
    Lsl(Operation<'func, M, F, BinaryOp>),
    Lsr(Operation<'func, M, F, BinaryOp>),
    Asr(Operation<'func, M, F, BinaryOp>),
    Rol(Operation<'func, M, F, BinaryOp>),
    Rlc(Operation<'func, M, F, BinaryOpCarry>),
    Ror(Operation<'func, M, F, BinaryOp>),
    Rrc(Operation<'func, M, F, BinaryOpCarry>),
    Mul(Operation<'func, M, F, BinaryOp>),
    MulsDp(Operation<'func, M, F, BinaryOp>),
    MuluDp(Operation<'func, M, F, BinaryOp>),
    Divu(Operation<'func, M, F, BinaryOp>),
    Divs(Operation<'func, M, F, BinaryOp>),
    DivuDp(Operation<'func, M, F, BinaryOp>),
    DivsDp(Operation<'func, M, F, BinaryOp>),
    Modu(Operation<'func, M, F, BinaryOp>),
    Mods(Operation<'func, M, F, BinaryOp>),
    ModuDp(Operation<'func, M, F, BinaryOp>),
    ModsDp(Operation<'func, M, F, BinaryOp>),
    Neg(Operation<'func, M, F, UnaryOp>),
    Not(Operation<'func, M, F, UnaryOp>),
    Sx(Operation<'func, M, F, UnaryOp>),
    Zx(Operation<'func, M, F, UnaryOp>),
    LowPart(Operation<'func, M, F, UnaryOp>),
    FlagCond(Operation<'func, M, F, FlagCond>),
    FlagGroup(Operation<'func, M, F, FlagGroup>),
    CmpE(Operation<'func, M, F, Condition>),
    CmpNe(Operation<'func, M, F, Condition>),
    CmpSlt(Operation<'func, M, F, Condition>),
    CmpUlt(Operation<'func, M, F, Condition>),
    CmpSle(Operation<'func, M, F, Condition>),
    CmpUle(Operation<'func, M, F, Condition>),
    CmpSge(Operation<'func, M, F, Condition>),
    CmpUge(Operation<'func, M, F, Condition>),
    CmpSgt(Operation<'func, M, F, Condition>),
    CmpUgt(Operation<'func, M, F, Condition>),
    TestBit(Operation<'func, M, F, BinaryOp>),
    BoolToInt(Operation<'func, M, F, UnaryOp>),
    Fadd(Operation<'func, M, F, BinaryOp>),
    Fsub(Operation<'func, M, F, BinaryOp>),
    Fmul(Operation<'func, M, F, BinaryOp>),
    Fdiv(Operation<'func, M, F, BinaryOp>),
    Fsqrt(Operation<'func, M, F, UnaryOp>),
    Fneg(Operation<'func, M, F, UnaryOp>),
    Fabs(Operation<'func, M, F, UnaryOp>),
    FloatToInt(Operation<'func, M, F, UnaryOp>),
    IntToFloat(Operation<'func, M, F, UnaryOp>),
    FloatConv(Operation<'func, M, F, UnaryOp>),
    RoundToInt(Operation<'func, M, F, UnaryOp>),
    Floor(Operation<'func, M, F, UnaryOp>),
    Ceil(Operation<'func, M, F, UnaryOp>),
    Ftrunc(Operation<'func, M, F, UnaryOp>),
    FloatConst(Operation<'func, M, F, FloatConst>),
    FcmpE(Operation<'func, M, F, Condition>),
    FcmpNE(Operation<'func, M, F, Condition>),
    FcmpLT(Operation<'func, M, F, Condition>),
    FcmpLE(Operation<'func, M, F, Condition>),
    FcmpGE(Operation<'func, M, F, Condition>),
    FcmpGT(Operation<'func, M, F, Condition>),
    FcmpO(Operation<'func, M, F, Condition>),
    FcmpUO(Operation<'func, M, F, Condition>),
    SeparateParamListSsa(Operation<'func, M, F, SeparateParamListSsa>),
    Unimpl(Operation<'func, M, F, NoArgs>),
    UnimplMem(Operation<'func, M, F, UnimplMem>),
    Undef(Operation<'func, M, F, NoArgs>),
}Variants§
Load(Operation<'func, M, F, Load>)
LoadSsa(Operation<'func, M, F, LoadSsa>)
Pop(Operation<'func, M, F, Pop>)
Reg(Operation<'func, M, F, Reg>)
RegSsa(Operation<'func, M, F, RegSsa>)
RegPartialSsa(Operation<'func, M, F, RegPartialSsa>)
RegSplit(Operation<'func, M, F, RegSplit>)
RegSplitSsa(Operation<'func, M, F, RegSplitSsa>)
Const(Operation<'func, M, F, Const>)
ConstPtr(Operation<'func, M, F, Const>)
Flag(Operation<'func, M, F, Flag>)
FlagBit(Operation<'func, M, F, FlagBit>)
ExternPtr(Operation<'func, M, F, Extern>)
RegStackPop(Operation<'func, M, F, RegStackPop>)
RegStackFreeReg(Operation<'func, M, F, RegStackPop>)
CallOutputSsa(Operation<'func, M, F, CallOutputSsa>)
CallParamSsa(Operation<'func, M, F, CallParamSsa>)
CallStackSsa(Operation<'func, M, F, CallStackSsa>)
Add(Operation<'func, M, F, BinaryOp>)
AddOverflow(Operation<'func, M, F, BinaryOp>)
Adc(Operation<'func, M, F, BinaryOpCarry>)
Sub(Operation<'func, M, F, BinaryOp>)
Sbb(Operation<'func, M, F, BinaryOpCarry>)
And(Operation<'func, M, F, BinaryOp>)
Or(Operation<'func, M, F, BinaryOp>)
Xor(Operation<'func, M, F, BinaryOp>)
Lsl(Operation<'func, M, F, BinaryOp>)
Lsr(Operation<'func, M, F, BinaryOp>)
Asr(Operation<'func, M, F, BinaryOp>)
Rol(Operation<'func, M, F, BinaryOp>)
Rlc(Operation<'func, M, F, BinaryOpCarry>)
Ror(Operation<'func, M, F, BinaryOp>)
Rrc(Operation<'func, M, F, BinaryOpCarry>)
Mul(Operation<'func, M, F, BinaryOp>)
MulsDp(Operation<'func, M, F, BinaryOp>)
MuluDp(Operation<'func, M, F, BinaryOp>)
Divu(Operation<'func, M, F, BinaryOp>)
Divs(Operation<'func, M, F, BinaryOp>)
DivuDp(Operation<'func, M, F, BinaryOp>)
DivsDp(Operation<'func, M, F, BinaryOp>)
Modu(Operation<'func, M, F, BinaryOp>)
Mods(Operation<'func, M, F, BinaryOp>)
ModuDp(Operation<'func, M, F, BinaryOp>)
ModsDp(Operation<'func, M, F, BinaryOp>)
Neg(Operation<'func, M, F, UnaryOp>)
Not(Operation<'func, M, F, UnaryOp>)
Sx(Operation<'func, M, F, UnaryOp>)
Zx(Operation<'func, M, F, UnaryOp>)
LowPart(Operation<'func, M, F, UnaryOp>)
FlagCond(Operation<'func, M, F, FlagCond>)
FlagGroup(Operation<'func, M, F, FlagGroup>)
CmpE(Operation<'func, M, F, Condition>)
CmpNe(Operation<'func, M, F, Condition>)
CmpSlt(Operation<'func, M, F, Condition>)
CmpUlt(Operation<'func, M, F, Condition>)
CmpSle(Operation<'func, M, F, Condition>)
CmpUle(Operation<'func, M, F, Condition>)
CmpSge(Operation<'func, M, F, Condition>)
CmpUge(Operation<'func, M, F, Condition>)
CmpSgt(Operation<'func, M, F, Condition>)
CmpUgt(Operation<'func, M, F, Condition>)
TestBit(Operation<'func, M, F, BinaryOp>)
BoolToInt(Operation<'func, M, F, UnaryOp>)
Fadd(Operation<'func, M, F, BinaryOp>)
Fsub(Operation<'func, M, F, BinaryOp>)
Fmul(Operation<'func, M, F, BinaryOp>)
Fdiv(Operation<'func, M, F, BinaryOp>)
Fsqrt(Operation<'func, M, F, UnaryOp>)
Fneg(Operation<'func, M, F, UnaryOp>)
Fabs(Operation<'func, M, F, UnaryOp>)
FloatToInt(Operation<'func, M, F, UnaryOp>)
IntToFloat(Operation<'func, M, F, UnaryOp>)
FloatConv(Operation<'func, M, F, UnaryOp>)
RoundToInt(Operation<'func, M, F, UnaryOp>)
Floor(Operation<'func, M, F, UnaryOp>)
Ceil(Operation<'func, M, F, UnaryOp>)
Ftrunc(Operation<'func, M, F, UnaryOp>)
FloatConst(Operation<'func, M, F, FloatConst>)
FcmpE(Operation<'func, M, F, Condition>)
FcmpNE(Operation<'func, M, F, Condition>)
FcmpLT(Operation<'func, M, F, Condition>)
FcmpLE(Operation<'func, M, F, Condition>)
FcmpGE(Operation<'func, M, F, Condition>)
FcmpGT(Operation<'func, M, F, Condition>)
FcmpO(Operation<'func, M, F, Condition>)
FcmpUO(Operation<'func, M, F, Condition>)
SeparateParamListSsa(Operation<'func, M, F, SeparateParamListSsa>)
Unimpl(Operation<'func, M, F, NoArgs>)
UnimplMem(Operation<'func, M, F, UnimplMem>)
Undef(Operation<'func, M, F, NoArgs>)
Implementations§
source§impl<'func, M, F> LowLevelILExpressionKind<'func, M, F>where
    M: FunctionMutability,
    F: FunctionForm,
 
impl<'func, M, F> LowLevelILExpressionKind<'func, M, F>where
    M: FunctionMutability,
    F: FunctionForm,
sourcepub fn size(&self) -> Option<usize>
 
pub fn size(&self) -> Option<usize>
Returns the size of the result of this expression
If the expression is malformed or is Unimpl there
is no meaningful size associated with the result.
pub fn address(&self) -> u64
sourcepub fn is_same_op_as(&self, other: &Self) -> bool
 
pub fn is_same_op_as(&self, other: &Self) -> bool
Determines if the expressions represent the same operation
It does not examine the operands for equality.
pub fn as_cmp_op(&self) -> Option<&Operation<'func, M, F, Condition>>
pub fn as_binary_op(&self) -> Option<&Operation<'func, M, F, BinaryOp>>
pub fn as_binary_op_carry( &self, ) -> Option<&Operation<'func, M, F, BinaryOpCarry>>
pub fn as_unary_op(&self) -> Option<&Operation<'func, M, F, UnaryOp>>
pub fn visit_sub_expressions<T>(&self, visitor: T) -> VisitorAction
source§impl LowLevelILExpressionKind<'_, Mutable, NonSSA>
 
impl LowLevelILExpressionKind<'_, Mutable, NonSSA>
pub fn flag_write(&self) -> Option<CoreFlagWrite>
Trait Implementations§
source§impl<'func, M, F> Debug for LowLevelILExpressionKind<'func, M, F>
 
impl<'func, M, F> Debug for LowLevelILExpressionKind<'func, M, F>
Auto Trait Implementations§
impl<'func, M, F> Freeze for LowLevelILExpressionKind<'func, M, F>
impl<'func, M, F> RefUnwindSafe for LowLevelILExpressionKind<'func, M, F>where
    M: RefUnwindSafe,
    F: RefUnwindSafe,
impl<'func, M, F> Send for LowLevelILExpressionKind<'func, M, F>
impl<'func, M, F> Sync for LowLevelILExpressionKind<'func, M, F>
impl<'func, M, F> Unpin for LowLevelILExpressionKind<'func, M, F>
impl<'func, M, F> UnwindSafe for LowLevelILExpressionKind<'func, M, F>where
    M: RefUnwindSafe,
    F: RefUnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more