Files
Toy/source/toy_opcodes.h
Kayne Ruse be7e4ddd18 Reworked the tests, read more
I've brought the tests up to scratch, except for compounds im the
parser, because I'm too damn tired to do that over SSH. It looks like
collections are right-recursive, whixh was unintended but still works
just fine.

I've also added the '--verbose' flag to the repl to control the
debugging output.

Several obscure bugs have been fixed, and comments have been tweaked.

Mustfail tests are still needed, but that's a low priority. See #142.

Fixed #151
2024-11-12 22:04:07 +11:00

51 lines
1.0 KiB
C

#pragma once
typedef enum Toy_OpcodeType {
//variable instructions
TOY_OPCODE_READ,
TOY_OPCODE_DECLARE,
TOY_OPCODE_ASSIGN,
TOY_OPCODE_ACCESS,
TOY_OPCODE_DUPLICATE, //duplicate the top of the stack
//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, //NOTE: optimized into a composite of TOY_OPCODE_COMPARE_EQUAL + TOY_OPCODE_NEGATE
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,
TOY_OPCODE_SCOPE_PUSH,
TOY_OPCODE_SCOPE_POP,
//various action instructions
TOY_OPCODE_ASSERT,
TOY_OPCODE_PRINT,
TOY_OPCODE_CONCAT,
TOY_OPCODE_INDEX,
//TODO: clear the program stack - much needed
//meta instructions
TOY_OPCODE_PASS,
TOY_OPCODE_ERROR,
TOY_OPCODE_EOF = 255,
} Toy_OpcodeType;