[][src]Enum metered_wasmi::isa::Instruction

pub enum Instruction<'a> {
    GetLocal(u32),
    SetLocal(u32),
    TeeLocal(u32),
    Br(Target),
    BrIfEqz(Target),
    BrIfNez(Target),
    BrTable(BrTargets<'a>),
    Unreachable,
    Return(DropKeep),
    Call(u32),
    CallIndirect(u32),
    Drop,
    Select,
    GetGlobal(u32),
    SetGlobal(u32),
    I32Load(u32),
    I64Load(u32),
    F32Load(u32),
    F64Load(u32),
    I32Load8S(u32),
    I32Load8U(u32),
    I32Load16S(u32),
    I32Load16U(u32),
    I64Load8S(u32),
    I64Load8U(u32),
    I64Load16S(u32),
    I64Load16U(u32),
    I64Load32S(u32),
    I64Load32U(u32),
    I32Store(u32),
    I64Store(u32),
    F32Store(u32),
    F64Store(u32),
    I32Store8(u32),
    I32Store16(u32),
    I64Store8(u32),
    I64Store16(u32),
    I64Store32(u32),
    CurrentMemory,
    GrowMemory,
    I32Const(i32),
    I64Const(i64),
    F32Const(u32),
    F64Const(u64),
    I32Eqz,
    I32Eq,
    I32Ne,
    I32LtS,
    I32LtU,
    I32GtS,
    I32GtU,
    I32LeS,
    I32LeU,
    I32GeS,
    I32GeU,
    I64Eqz,
    I64Eq,
    I64Ne,
    I64LtS,
    I64LtU,
    I64GtS,
    I64GtU,
    I64LeS,
    I64LeU,
    I64GeS,
    I64GeU,
    F32Eq,
    F32Ne,
    F32Lt,
    F32Gt,
    F32Le,
    F32Ge,
    F64Eq,
    F64Ne,
    F64Lt,
    F64Gt,
    F64Le,
    F64Ge,
    I32Clz,
    I32Ctz,
    I32Popcnt,
    I32Add,
    I32Sub,
    I32Mul,
    I32DivS,
    I32DivU,
    I32RemS,
    I32RemU,
    I32And,
    I32Or,
    I32Xor,
    I32Shl,
    I32ShrS,
    I32ShrU,
    I32Rotl,
    I32Rotr,
    I64Clz,
    I64Ctz,
    I64Popcnt,
    I64Add,
    I64Sub,
    I64Mul,
    I64DivS,
    I64DivU,
    I64RemS,
    I64RemU,
    I64And,
    I64Or,
    I64Xor,
    I64Shl,
    I64ShrS,
    I64ShrU,
    I64Rotl,
    I64Rotr,
    F32Abs,
    F32Neg,
    F32Ceil,
    F32Floor,
    F32Trunc,
    F32Nearest,
    F32Sqrt,
    F32Add,
    F32Sub,
    F32Mul,
    F32Div,
    F32Min,
    F32Max,
    F32Copysign,
    F64Abs,
    F64Neg,
    F64Ceil,
    F64Floor,
    F64Trunc,
    F64Nearest,
    F64Sqrt,
    F64Add,
    F64Sub,
    F64Mul,
    F64Div,
    F64Min,
    F64Max,
    F64Copysign,
    I32WrapI64,
    I32TruncSF32,
    I32TruncUF32,
    I32TruncSF64,
    I32TruncUF64,
    I64ExtendSI32,
    I64ExtendUI32,
    I64TruncSF32,
    I64TruncUF32,
    I64TruncSF64,
    I64TruncUF64,
    F32ConvertSI32,
    F32ConvertUI32,
    F32ConvertSI64,
    F32ConvertUI64,
    F32DemoteF64,
    F64ConvertSI32,
    F64ConvertUI32,
    F64ConvertSI64,
    F64ConvertUI64,
    F64PromoteF32,
    I32ReinterpretF32,
    I64ReinterpretF64,
    F32ReinterpretI32,
    F64ReinterpretI64,
}

The main interpreted instruction type. This is what is returned by InstructionIter, but it is not what is stored internally. For that, see InstructionInternal.

Variants

GetLocal(u32)

Push a local variable or an argument from the specified depth.

SetLocal(u32)

Pop a value and put it in at the specified depth.

TeeLocal(u32)

Copy a value to the specified depth.

Br(Target)

Similar to the Wasm ones, but instead of a label depth they specify direct PC.

BrIfEqz(Target)BrIfNez(Target)BrTable(BrTargets<'a>)

br_table [t1 t2 t3 .. tn] tdefault

Pops the value from the stack. Then this value is used as an index to the branch table.

However, the last target represents the default target. So if the index is greater than length of the branch table, then the last index will be used.

Validation ensures that there should be at least one target.

UnreachableReturn(DropKeep)Call(u32)CallIndirect(u32)DropSelectGetGlobal(u32)SetGlobal(u32)I32Load(u32)I64Load(u32)F32Load(u32)F64Load(u32)I32Load8S(u32)I32Load8U(u32)I32Load16S(u32)I32Load16U(u32)I64Load8S(u32)I64Load8U(u32)I64Load16S(u32)I64Load16U(u32)I64Load32S(u32)I64Load32U(u32)I32Store(u32)I64Store(u32)F32Store(u32)F64Store(u32)I32Store8(u32)I32Store16(u32)I64Store8(u32)I64Store16(u32)I64Store32(u32)CurrentMemoryGrowMemoryI32Const(i32)I64Const(i64)F32Const(u32)F64Const(u64)I32EqzI32EqI32NeI32LtSI32LtUI32GtSI32GtUI32LeSI32LeUI32GeSI32GeUI64EqzI64EqI64NeI64LtSI64LtUI64GtSI64GtUI64LeSI64LeUI64GeSI64GeUF32EqF32NeF32LtF32GtF32LeF32GeF64EqF64NeF64LtF64GtF64LeF64GeI32ClzI32CtzI32PopcntI32AddI32SubI32MulI32DivSI32DivUI32RemSI32RemUI32AndI32OrI32XorI32ShlI32ShrSI32ShrUI32RotlI32RotrI64ClzI64CtzI64PopcntI64AddI64SubI64MulI64DivSI64DivUI64RemSI64RemUI64AndI64OrI64XorI64ShlI64ShrSI64ShrUI64RotlI64RotrF32AbsF32NegF32CeilF32FloorF32TruncF32NearestF32SqrtF32AddF32SubF32MulF32DivF32MinF32MaxF32CopysignF64AbsF64NegF64CeilF64FloorF64TruncF64NearestF64SqrtF64AddF64SubF64MulF64DivF64MinF64MaxF64CopysignI32WrapI64I32TruncSF32I32TruncUF32I32TruncSF64I32TruncUF64I64ExtendSI32I64ExtendUI32I64TruncSF32I64TruncUF32I64TruncSF64I64TruncUF64F32ConvertSI32F32ConvertUI32F32ConvertSI64F32ConvertUI64F32DemoteF64F64ConvertSI32F64ConvertUI32F64ConvertSI64F64ConvertUI64F64PromoteF32I32ReinterpretF32I64ReinterpretF64F32ReinterpretI32F64ReinterpretI64

Trait Implementations

impl<'a> PartialEq<Instruction<'a>> for Instruction<'a>[src]

impl<'a> Clone for Instruction<'a>[src]

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

Performs copy-assignment from source. Read more

impl<'a> Debug for Instruction<'a>[src]

Auto Trait Implementations

impl<'a> Send for Instruction<'a>

impl<'a> Unpin for Instruction<'a>

impl<'a> Sync for Instruction<'a>

impl<'a> UnwindSafe for Instruction<'a>

impl<'a> RefUnwindSafe for Instruction<'a>

Blanket Implementations

impl<T> From<T> for T[src]

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

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

type Owned = T

The resulting type after obtaining ownership.

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.

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

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

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