Added and implemented OP_JUMP_(STACK|REGISTER)

Uses the stack and register, respectively, to jump to an absolute
address.  The stack based jump pops a word off the stack to perform a
jump, while the register based one uses the operand to figure out
which register to use.
This commit is contained in:
2023-10-22 20:57:29 +01:00
parent d8e45fce04
commit 7f1994c7aa
3 changed files with 39 additions and 10 deletions

View File

@@ -68,6 +68,8 @@ typedef enum
// Mathematical operations
// Program control flow
OP_JUMP_ABS,
OP_JUMP_STACK,
OP_JUMP_REGISTER,
// Should not be an opcode
NUMBER_OF_OPCODES,
@@ -129,5 +131,7 @@ inst_t *insts_read_bytecode_file(FILE *, size_t *);
#define INST_JUMP_ABS(OP) \
((inst_t){.opcode = OP_JUMP_ABS, .operand = DWORD(OP)})
#define INST_JUMP_STACK ((inst_t){.opcode = OP_JUMP_STACK})
#define INST_JUMP_REGISTER ((inst_t){.opcode = OP_JUMP_REGISTER})
#endif