Files
Toy/source/toy_opcodes.h
Kayne Ruse 3148a56ce0 Added simple assignment, read more
I was coding earlier this week, but my brain was so foggy I ended up not
knowing what I was doing. After a few days break, I've cleaned up the
mess, which took hours.

Changes:
* Variables can be assigned
* Added new value types as placeholders
* Added 'compare' and 'assign' to the AST
* Added duplicate opcode
* Added functions to copy and free values
* Max name length is 255 chars
* Compound assigns are squeezed into one word

To be completed:

* Tests for this commit's changes
* Compound assignments
* Variable access
2024-10-25 22:48:24 +11:00

47 lines
971 B
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,
//various action instructions
TOY_OPCODE_PRINT,
TOY_OPCODE_CONCAT,
//TODO: clear the program stack?
//meta instructions
TOY_OPCODE_PASS,
TOY_OPCODE_ERROR,
TOY_OPCODE_EOF = 255,
} Toy_OpcodeType;