#pragma once typedef enum Toy_OpcodeType { //variable instructions TOY_OPCODE_READ, TOY_OPCODE_LOAD, TOY_OPCODE_LOAD_LONG, //corner case TOY_OPCODE_DECLARE, TOY_OPCODE_ASSIGN, TOY_OPCODE_ACCESS, //arithmetic instructions TOY_OPCODE_ADD, TOY_OPCODE_SUBTRACT, TOY_OPCODE_MULTIPLY, TOY_OPCODE_DIVIDE, TOY_OPCODE_MODULO, //comparison instructions TOY_OPCODE_COMPARE_EQUAL, // TOY_OPCODE_COMPARE_NOT, TOY_OPCODE_COMPARE_LESS, TOY_OPCODE_COMPARE_LESS_EQUAL, TOY_OPCODE_COMPARE_GREATER, TOY_OPCODE_COMPARE_GREATER_EQUAL, //logical instructions TOY_OPCODE_AND, TOY_OPCODE_OR, TOY_OPCODE_TRUTHY, TOY_OPCODE_NEGATE, //control instructions TOY_OPCODE_RETURN, //meta instructions TOY_OPCODE_PASS, TOY_OPCODE_ERROR, TOY_OPCODE_EOF = 255, } Toy_OpcodeType;