use num_enum::TryFromPrimitive;
#[repr(u8)]
#[derive(TryFromPrimitive)]
pub enum Instruction {
Add = 0x0,
Subtract = 0x1,
Multiply = 0x2,
Divide = 0x3,
Modulo = 0x4,
Inc = 0x5,
Dec = 0x6,
SubAssign = 0x7,
AddAssign = 0x8,
IntCast = 0x9,
FloatCast = 0xa,
BoolCast = 0xb,
StringCast = 0xc,
And = 0xd,
Or = 0xe,
Cat = 0xf,
BranchFalse = 0x10,
BranchTrue = 0x11,
Goto = 0x12,
Less = 0x13,
Greater = 0x14,
Equal = 0x15,
NotEqual = 0x16,
LessEqual = 0x17,
GreaterEqual = 0x18,
Not = 0x19,
Array = 0x1a,
Element = 0x1b,
Contains = 0x1c,
Remove = 0x1d,
Iterator = 0x1e,
IteratorTest = 0x1f,
IteratorAssign = 0x20,
NullObject = 0x21,
Float = 0x22,
Int = 0x23,
String = 0x24,
Bool = 0x25,
Var = 0x26,
VarAssign = 0x27,
ParamAssign = 0x28,
Assign = 0x29,
IncScope = 0x2a,
DecScope = 0x2b,
Identifier = 0x2c,
Label = 0x2d,
Return = 0x2e,
ReturnNull = 0x2f,
Print = 0x30,
Negate = 0x31,
Pop = 0x32,
New = 0x33,
NewValue = 0x34,
Nop = 0x35,
Call = 0x36,
CallMethod = 0x37,
Method = 0x38,
MethodChain = 0x39,
Property = 0x3a,
Line = 0x3b,
Rand = 0x3c,
RandRange = 0x3d,
MulAssign = 0x3e,
DivAssign = 0x3f,
ModAssign = 0x40,
PreInc = 0x41,
PreDec = 0x42,
}