#[derive(Debug)]
pub enum ByteCode {
LoadConst(u8, u16),
LoadNil(u8, u8),
LoadBool(u8, bool),
LoadInt(u8, i16),
Move(u8, u8),
GetUpvalue(u8, u8),
SetUpvalue(u8, u8),
SetUpvalueConst(u8, u8),
Close(u8),
NewTable(u8, u8, u8),
SetTable(u8, u8, u8),
SetField(u8, u8, u8),
SetInt(u8, u8, u8),
SetTableConst(u8, u8, u8),
SetFieldConst(u8, u8, u8),
SetIntConst(u8, u8, u8),
SetList(u8, u8),
GetTable(u8, u8, u8),
GetField(u8, u8, u8),
GetInt(u8, u8, u8),
GetFieldSelf(u8, u8, u8),
SetUpField(u8, u8, u8),
SetUpFieldConst(u8, u8, u8),
GetUpField(u8, u8, u8),
Jump(i16),
TestAndJump(u8, i16),
TestOrJump(u8, i16),
TestAndSetJump(u8, u8, u8),
TestOrSetJump(u8, u8, u8),
ForPrepare(u8, u16),
ForLoop(u8, u16),
ForCallLoop(u8, u8, u8),
Closure(u8, u16),
Call(u8, u8, u8),
CallSet(u8, u8, u8),
TailCall(u8, u8),
Return0,
Return(u8, u8),
VarArgs(u8, u8),
Neg(u8, u8),
Not(u8, u8),
BitNot(u8, u8),
Len(u8, u8),
Add(u8, u8, u8),
AddConst(u8, u8, u8),
AddInt(u8, u8, u8),
Sub(u8, u8, u8),
SubInt(u8, u8, u8),
SubConst(u8, u8, u8),
Mul(u8, u8, u8),
MulInt(u8, u8, u8),
MulConst(u8, u8, u8),
Mod(u8, u8, u8),
ModInt(u8, u8, u8),
ModConst(u8, u8, u8),
Div(u8, u8, u8),
DivInt(u8, u8, u8),
DivConst(u8, u8, u8),
Idiv(u8, u8, u8),
IdivInt(u8, u8, u8),
IdivConst(u8, u8, u8),
Pow(u8, u8, u8),
PowInt(u8, u8, u8),
PowConst(u8, u8, u8),
BitAnd(u8, u8, u8),
BitAndInt(u8, u8, u8),
BitAndConst(u8, u8, u8),
BitXor(u8, u8, u8),
BitXorInt(u8, u8, u8),
BitXorConst(u8, u8, u8),
BitOr(u8, u8, u8),
BitOrInt(u8, u8, u8),
BitOrConst(u8, u8, u8),
ShiftL(u8, u8, u8),
ShiftLInt(u8, u8, u8),
ShiftLConst(u8, u8, u8),
ShiftR(u8, u8, u8),
ShiftRInt(u8, u8, u8),
ShiftRConst(u8, u8, u8),
Equal(u8, u8, bool),
EqualInt(u8, u8, bool),
EqualConst(u8, u8, bool),
NotEq(u8, u8, bool),
NotEqInt(u8, u8, bool),
NotEqConst(u8, u8, bool),
LesEq(u8, u8, bool),
LesEqInt(u8, u8, bool),
LesEqConst(u8, u8, bool),
GreEq(u8, u8, bool),
GreEqInt(u8, u8, bool),
GreEqConst(u8, u8, bool),
Less(u8, u8, bool),
LessInt(u8, u8, bool),
LessConst(u8, u8, bool),
Greater(u8, u8, bool),
GreaterInt(u8, u8, bool),
GreaterConst(u8, u8, bool),
SetFalseSkip(u8),
Concat(u8, u8, u8),
}