lunar_wave/src/instruction.rs

80 lines
1.0 KiB
Rust

#[derive (Debug, PartialEq)]
pub enum Instruction {
Add (u8, u8, u8),
Call (u8, u8, u8),
Closure (u8, u32),
// Equals Constant?
EqK (u8, u8, bool),
ExtraArg (u32),
ForLoop (u8, u32),
ForPrep (u8, u32),
GetField (u8, u8, u8),
// Get Immediate?
GetI (u8, u8, u8),
GetTable (u8, u8, u8),
// Get Table, Upvalue
GetTabUp (u8, u8, u8),
GetUpVal (u8, u8),
// Jump
Jmp (i32),
// Load F (Float?)
LoadF (u8, i32),
LoadFalse (u8),
// Load Integer?
LoadI (u8, i32),
// Load Constant
LoadK (u8, u32),
LoadNil (u8),
LoadTrue (u8),
// MetaMethod, Binary
MmBin (u8, u8, u8),
Move (u8, u8),
Mul (u8, u8, u8),
NewTable (u8),
Not (u8, u8),
// (A, B, _C, k) Return B - 1 registers starting with A
Return (u8, u8, u8, bool),
Return0,
// Return just one register
Return1 (u8),
SetField (u8, u8, u8, bool),
SetI (u8, u8, u8, bool),
SetList (u8, u8, u8, bool),
SetTabUp (u8, u8, u8),
TailCall (u8, u8, u8, bool),
Test (u8, bool),
VarArgPrep (i32),
}