Skip to main content

OpCode

Enum OpCode 

Source
#[repr(u8)]
pub enum OpCode {
Show 83 variants Move = 0, LoadI = 1, LoadF = 2, LoadK = 3, LoadKX = 4, LoadFalse = 5, LFalseSkip = 6, LoadTrue = 7, LoadNil = 8, GetUpVal = 9, SetUpVal = 10, GetTabUp = 11, GetTable = 12, GetI = 13, GetField = 14, SetTabUp = 15, SetTable = 16, SetI = 17, SetField = 18, NewTable = 19, Self_ = 20, AddI = 21, AddK = 22, SubK = 23, MulK = 24, ModK = 25, PowK = 26, DivK = 27, IDivK = 28, BAndK = 29, BOrK = 30, BXorK = 31, ShrI = 32, ShlI = 33, Add = 34, Sub = 35, Mul = 36, Mod = 37, Pow = 38, Div = 39, IDiv = 40, BAnd = 41, BOr = 42, BXor = 43, Shl = 44, Shr = 45, MmBin = 46, MmBinI = 47, MmBinK = 48, Unm = 49, BNot = 50, Not = 51, Len = 52, Concat = 53, Close = 54, Tbc = 55, Jmp = 56, Eq = 57, Lt = 58, Le = 59, EqK = 60, EqI = 61, LtI = 62, LeI = 63, GtI = 64, GeI = 65, Test = 66, TestSet = 67, Call = 68, TailCall = 69, Return = 70, Return0 = 71, Return1 = 72, ForLoop = 73, ForPrep = 74, TForPrep = 75, TForCall = 76, TForLoop = 77, SetList = 78, Closure = 79, VarArg = 80, VarArgPrep = 81, ExtraArg = 82,
}
Expand description

All opcodes for the Lua 5.4 virtual machine.

ORDER OP — must match lopcodes.h exactly.

Variants§

§

Move = 0

§

LoadI = 1

§

LoadF = 2

§

LoadK = 3

§

LoadKX = 4

§

LoadFalse = 5

§

LFalseSkip = 6

§

LoadTrue = 7

§

LoadNil = 8

§

GetUpVal = 9

§

SetUpVal = 10

§

GetTabUp = 11

§

GetTable = 12

§

GetI = 13

§

GetField = 14

§

SetTabUp = 15

§

SetTable = 16

§

SetI = 17

§

SetField = 18

§

NewTable = 19

§

Self_ = 20

§

AddI = 21

§

AddK = 22

§

SubK = 23

§

MulK = 24

§

ModK = 25

§

PowK = 26

§

DivK = 27

§

IDivK = 28

§

BAndK = 29

§

BOrK = 30

§

BXorK = 31

§

ShrI = 32

§

ShlI = 33

§

Add = 34

§

Sub = 35

§

Mul = 36

§

Mod = 37

§

Pow = 38

§

Div = 39

§

IDiv = 40

§

BAnd = 41

§

BOr = 42

§

BXor = 43

§

Shl = 44

§

Shr = 45

§

MmBin = 46

§

MmBinI = 47

§

MmBinK = 48

§

Unm = 49

§

BNot = 50

§

Not = 51

§

Len = 52

§

Concat = 53

§

Close = 54

§

Tbc = 55

§

Jmp = 56

§

Eq = 57

§

Lt = 58

§

Le = 59

§

EqK = 60

§

EqI = 61

§

LtI = 62

§

LeI = 63

§

GtI = 64

§

GeI = 65

§

Test = 66

§

TestSet = 67

§

Call = 68

§

TailCall = 69

§

Return = 70

§

Return0 = 71

§

Return1 = 72

§

ForLoop = 73

§

ForPrep = 74

§

TForPrep = 75

§

TForCall = 76

§

TForLoop = 77

§

SetList = 78

§

Closure = 79

§

VarArg = 80

§

VarArgPrep = 81

§

ExtraArg = 82

Implementations§

Source§

impl OpCode

Source

pub fn from_u32(v: u32) -> Option<OpCode>

Convert a raw u32 opcode field value to an OpCode.

Returns None if v >= NUM_OPCODES.

TODO(port): replace explicit match with a safe transmute or num_enum crate derive once Phase B settles the dependency policy. The match is correct but mechanical; 83 arms is noise at compile-time and runtime.

Trait Implementations§

Source§

impl Clone for OpCode

Source§

fn clone(&self) -> OpCode

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 OpCode

Source§

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

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

impl Ord for OpCode

Source§

fn cmp(&self, other: &OpCode) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for OpCode

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 PartialOrd for OpCode

Source§

fn partial_cmp(&self, other: &OpCode) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Copy for OpCode

Source§

impl Eq for OpCode

Source§

impl StructuralPartialEq for OpCode

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.