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 · 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 PartialEq for PcodeOp

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for PcodeOp

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.