lunar_wave/src/instruction.rs

86 lines
1.1 KiB
Rust
Raw Normal View History

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),
2023-09-27 03:45:41 +00:00
EqI (u8, i8, bool),
2023-09-26 21:47:51 +00:00
// Equals Constant?
EqK (u8, u8, bool),
ExtraArg (u32),
ForLoop (u8, u32),
ForPrep (u8, u32),
GetField (u8, u8, u8),
2023-09-26 21:47:51 +00:00
// Get Immediate?
GetI (u8, u8, u8),
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),
2023-09-27 03:45:41 +00:00
MmBinK (u8, u8, u8, bool),
ModK (u8, u8, u8),
2023-09-26 21:47:51 +00:00
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),
2023-09-26 21:47:51 +00:00
SetTabUp (u8, u8, u8),
TailCall (u8, u8, u8, bool),
Test (u8, bool),
VarArgPrep (i32),
}