2023-09-26 21:47:51 +00:00
|
|
|
#[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),
|
|
|
|
|
2023-09-27 01:31:00 +00:00
|
|
|
GetField (u8, u8, u8),
|
|
|
|
|
2023-09-26 21:47:51 +00:00
|
|
|
// Get Immediate?
|
|
|
|
GetI (u8, u8, u8),
|
|
|
|
|
2023-09-27 01:31:00 +00:00
|
|
|
GetTable (u8, u8, u8),
|
|
|
|
|
2023-09-26 21:47:51 +00:00
|
|
|
// 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),
|
|
|
|
|
2023-09-27 01:31:00 +00:00
|
|
|
SetField (u8, u8, u8, bool),
|
|
|
|
|
|
|
|
SetI (u8, u8, u8, bool),
|
|
|
|
|
|
|
|
SetList (u8, u8, u8, bool),
|
|
|
|
|
2023-09-26 21:47:51 +00:00
|
|
|
SetTabUp (u8, u8, u8),
|
|
|
|
|
|
|
|
TailCall (u8, u8, u8, bool),
|
|
|
|
|
|
|
|
Test (u8, bool),
|
|
|
|
|
|
|
|
VarArgPrep (i32),
|
|
|
|
}
|