Skip to main content

PcodeOp

Enum PcodeOp 

Source
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

Fields

§input: Varnode
§

Load

Fields

§

Store

Fields

§

Branch

Fields

§dest: Varnode
§

CBranch

Fields

§dest: Varnode
§cond: Varnode
§

BranchInd

Fields

§dest: Varnode
§

Call

Fields

§dest: Varnode
§

CallInd

Fields

§dest: Varnode
§

Return

Fields

§dest: Varnode
§

IntAdd

Fields

§left: Varnode
§right: Varnode
§

IntSub

Fields

§left: Varnode
§right: Varnode
§

IntMult

Fields

§left: Varnode
§right: Varnode
§

IntDiv

Fields

§left: Varnode
§right: Varnode
§

IntSDiv

Fields

§left: Varnode
§right: Varnode
§

IntRem

Fields

§left: Varnode
§right: Varnode
§

IntSRem

Fields

§left: Varnode
§right: Varnode
§

IntNeg

Fields

§input: Varnode
§

IntEq

Fields

§left: Varnode
§right: Varnode
§

IntNotEq

Fields

§left: Varnode
§right: Varnode
§

IntLess

Fields

§left: Varnode
§right: Varnode
§

IntLessEq

Fields

§left: Varnode
§right: Varnode
§

IntSLess

Fields

§left: Varnode
§right: Varnode
§

IntSLessEq

Fields

§left: Varnode
§right: Varnode
§

IntAnd

Fields

§left: Varnode
§right: Varnode
§

IntOr

Fields

§left: Varnode
§right: Varnode
§

IntXor

Fields

§left: Varnode
§right: Varnode
§

IntNot

Fields

§input: Varnode
§

IntLsl

Fields

§left: Varnode
§right: Varnode
§

IntLsr

Fields

§left: Varnode
§right: Varnode
§

IntAsr

Fields

§left: Varnode
§right: Varnode
§

IntZext

Fields

§input: Varnode
§

IntSext

Fields

§input: Varnode
§

Subpiece

Fields

§input: Varnode
§lsb: u32
§

IntCarry

Fields

§left: Varnode
§right: Varnode
§

IntSCarry

Fields

§left: Varnode
§right: Varnode
§

IntSBorrow

Fields

§left: Varnode
§right: Varnode
§

BoolAnd

Fields

§left: Varnode
§right: Varnode
§

BoolOr

Fields

§left: Varnode
§right: Varnode
§

BoolXor

Fields

§left: Varnode
§right: Varnode
§

BoolNot

Fields

§input: Varnode
§

FloatAdd

Fields

§left: Varnode
§right: Varnode
§

FloatSub

Fields

§left: Varnode
§right: Varnode
§

FloatMult

Fields

§left: Varnode
§right: Varnode
§

FloatDiv

Fields

§left: Varnode
§right: Varnode
§

FloatNeg

Fields

§input: Varnode
§

FloatAbs

Fields

§input: Varnode
§

FloatSqrt

Fields

§input: Varnode
§

FloatEq

Fields

§left: Varnode
§right: Varnode
§

FloatNotEq

Fields

§left: Varnode
§right: Varnode
§

FloatLess

Fields

§left: Varnode
§right: Varnode
§

FloatLessEq

Fields

§left: Varnode
§right: Varnode
§

FloatNan

Fields

§input: Varnode
§

Int2Float

Fields

§input: Varnode
§

Float2Float

Fields

§input: Varnode
§

Trunc

Fields

§input: Varnode
§

FloatCeil

Fields

§input: Varnode
§

FloatFloor

Fields

§input: Varnode
§

FloatRound

Fields

§input: Varnode
§

Popcount

Fields

§input: Varnode
§

Lzcount

Fields

§input: Varnode
§

CallOther

User-defined or architecture-specific operation.

Fields

§func_id: u64
§inputs: Vec<Varnode>

Trait Implementations§

Source§

impl Clone for PcodeOp

Source§

fn clone(&self) -> PcodeOp

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PcodeOp

Source§

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

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

impl Eq for PcodeOp

Source§

impl PartialEq for PcodeOp

Source§

fn eq(&self, other: &PcodeOp) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for PcodeOp

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.