[][src]Enum p8n_types::Operation

pub enum Operation {
    Add(ValueValue),
    Subtract(ValueValue),
    Multiply(ValueValue),
    DivideUnsigned(ValueValue),
    DivideSigned(ValueValue),
    ShiftLeft(ValueValue),
    ShiftRightUnsigned(ValueValue),
    ShiftRightSigned(ValueValue),
    Modulo(ValueValue),
    And(ValueValue),
    InclusiveOr(ValueValue),
    ExclusiveOr(ValueValue),
    Equal(ValueValue),
    LessOrEqualUnsigned(ValueValue),
    LessOrEqualSigned(ValueValue),
    LessUnsigned(ValueValue),
    LessSigned(ValueValue),
    ZeroExtend(usizeValue),
    SignExtend(usizeValue),
    Move(Value),
    Initialize(StrRefusize),
    Select(usizeusizeValue),
    Assume(ConstraintValue),
    Load(SegmentEndianessusizeValue),
    Phi(ValueValueValue),
}

A RREIL operation.

Variants

Add(ValueValue)

Integer addition

Subtract(ValueValue)

Integer subtraction

Multiply(ValueValue)

Unsigned integer multiplication

DivideUnsigned(ValueValue)

Unsigned integer division

DivideSigned(ValueValue)

Signed integer division

ShiftLeft(ValueValue)

Bitwise left shift

ShiftRightUnsigned(ValueValue)

Bitwise logical right shift

ShiftRightSigned(ValueValue)

Bitwise arithmetic right shift

Modulo(ValueValue)

Integer modulo

And(ValueValue)

Bitwise logical and

InclusiveOr(ValueValue)

Bitwise logical or

ExclusiveOr(ValueValue)

Bitwise logical xor

Equal(ValueValue)

Compare both operands for equality and returns 1 or 0

LessOrEqualUnsigned(ValueValue)

Returns 1 if the first operand is less than or equal to the second and 0 otherwise. Comparison assumes unsigned values.

LessOrEqualSigned(ValueValue)

Returns 1 if the first operand is less than or equal to the second and 0 otherwise. Comparison assumes signed values.

LessUnsigned(ValueValue)

Returns 1 if the first operand is less than the second and 0 otherwise. Comparison assumes unsigned values.

LessSigned(ValueValue)

Returns 1 if the first operand is less than the second and 0 otherwise. Comparison assumes signed values.

ZeroExtend(usizeValue)

Zero extends the operand.

SignExtend(usizeValue)

Sign extends the operand.

Move(Value)

Copies the operand without modification.

Initialize(StrRefusize)

Initializes a global variable.

Select(usizeusizeValue)

Copies only the range [self.0, self.0 + self.1] of bits from the operand.

Assume(ConstraintValue)

Asserts that the second operand is constraint by the first.

Load(SegmentEndianessusizeValue)

Reads a memory cell

Phi(ValueValueValue)

SSA Phi function

Methods

impl Operation[src]

pub fn reads<'x>(&'x self) -> SmallVec<[&'x Value; 3]>[src]

Returns references values that are read by the operation.

pub fn reads_mut<'x>(&'x mut self) -> SmallVec<[&'x mut Value; 3]>[src]

Returns mutables references values that are read by the operation.

pub fn execute(&self) -> Result<Value>[src]

Executes a RREIL operation returning the result.

Trait Implementations

impl Eq for Operation[src]

impl Clone for Operation[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl PartialEq<Operation> for Operation[src]

impl Debug for Operation[src]

impl Arbitrary for Operation[src]

fn shrink(&self) -> Box<dyn Iterator<Item = Self> + 'static>[src]

Auto Trait Implementations

impl Send for Operation

impl Sync for Operation

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<Q, K> Equivalent for Q where
    K: Borrow<Q> + ?Sized,
    Q: Eq + ?Sized
[src]