pub enum PcodeOp {
Show 61 variants
Copy {
out: Varnode,
input: Varnode,
},
Load {
out: Varnode,
space: AddressSpaceId,
ptr: Varnode,
},
Store {
space: AddressSpaceId,
ptr: Varnode,
val: Varnode,
},
Branch {
dest: Varnode,
},
CBranch {
dest: Varnode,
cond: Varnode,
},
BranchInd {
dest: Varnode,
},
Call {
dest: Varnode,
},
CallInd {
dest: Varnode,
},
Return {
dest: Varnode,
},
IntAdd {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntSub {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntMult {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntDiv {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntSDiv {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntRem {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntSRem {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntNeg {
out: Varnode,
input: Varnode,
},
IntEq {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntNotEq {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntLess {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntLessEq {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntSLess {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntSLessEq {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntAnd {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntOr {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntXor {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntNot {
out: Varnode,
input: Varnode,
},
IntLsl {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntLsr {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntAsr {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntZext {
out: Varnode,
input: Varnode,
},
IntSext {
out: Varnode,
input: Varnode,
},
Subpiece {
out: Varnode,
input: Varnode,
lsb: u32,
},
IntCarry {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntSCarry {
out: Varnode,
left: Varnode,
right: Varnode,
},
IntSBorrow {
out: Varnode,
left: Varnode,
right: Varnode,
},
BoolAnd {
out: Varnode,
left: Varnode,
right: Varnode,
},
BoolOr {
out: Varnode,
left: Varnode,
right: Varnode,
},
BoolXor {
out: Varnode,
left: Varnode,
right: Varnode,
},
BoolNot {
out: Varnode,
input: Varnode,
},
FloatAdd {
out: Varnode,
left: Varnode,
right: Varnode,
},
FloatSub {
out: Varnode,
left: Varnode,
right: Varnode,
},
FloatMult {
out: Varnode,
left: Varnode,
right: Varnode,
},
FloatDiv {
out: Varnode,
left: Varnode,
right: Varnode,
},
FloatNeg {
out: Varnode,
input: Varnode,
},
FloatAbs {
out: Varnode,
input: Varnode,
},
FloatSqrt {
out: Varnode,
input: Varnode,
},
FloatEq {
out: Varnode,
left: Varnode,
right: Varnode,
},
FloatNotEq {
out: Varnode,
left: Varnode,
right: Varnode,
},
FloatLess {
out: Varnode,
left: Varnode,
right: Varnode,
},
FloatLessEq {
out: Varnode,
left: Varnode,
right: Varnode,
},
FloatNan {
out: Varnode,
input: Varnode,
},
Int2Float {
out: Varnode,
input: Varnode,
},
Float2Float {
out: Varnode,
input: Varnode,
},
Trunc {
out: Varnode,
input: Varnode,
},
FloatCeil {
out: Varnode,
input: Varnode,
},
FloatFloor {
out: Varnode,
input: Varnode,
},
FloatRound {
out: Varnode,
input: Varnode,
},
Popcount {
out: Varnode,
input: Varnode,
},
Lzcount {
out: Varnode,
input: Varnode,
},
CallOther {
out: Option<Varnode>,
func_id: u64,
inputs: Vec<Varnode>,
},
}Expand description
A single P-code operation.
Variant naming follows Ghidra’s P-code reference. See: https://ghidra.re/courses/languages/html/pcoderef.html
Variants§
Copy
Load
Store
Branch
CBranch
BranchInd
Call
CallInd
Return
IntAdd
IntSub
IntMult
IntDiv
IntSDiv
IntRem
IntSRem
IntNeg
IntEq
IntNotEq
IntLess
IntLessEq
IntSLess
IntSLessEq
IntAnd
IntOr
IntXor
IntNot
IntLsl
IntLsr
IntAsr
IntZext
IntSext
Subpiece
IntCarry
IntSCarry
IntSBorrow
BoolAnd
BoolOr
BoolXor
BoolNot
FloatAdd
FloatSub
FloatMult
FloatDiv
FloatNeg
FloatAbs
FloatSqrt
FloatEq
FloatNotEq
FloatLess
FloatLessEq
FloatNan
Int2Float
Float2Float
Trunc
FloatCeil
FloatFloor
FloatRound
Popcount
Lzcount
CallOther
User-defined or architecture-specific operation.
Trait Implementations§
impl Eq for PcodeOp
impl StructuralPartialEq for PcodeOp
Auto Trait Implementations§
impl Freeze for PcodeOp
impl RefUnwindSafe for PcodeOp
impl Send for PcodeOp
impl Sync for PcodeOp
impl Unpin for PcodeOp
impl UnsafeUnpin for PcodeOp
impl UnwindSafe for PcodeOp
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