From 7f1994c7aa1e3f18bc8baf7cb37f9fe093c884eb Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sun, 22 Oct 2023 20:57:29 +0100 Subject: 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. --- src/inst.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/inst.h') diff --git a/src/inst.h b/src/inst.h index a9709fd..487a41b 100644 --- a/src/inst.h +++ b/src/inst.h @@ -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 -- cgit v1.2.3-13-gbd6f