From 7a820290f945f94bc38732d989746155883e151a Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sun, 15 Oct 2023 20:56:02 +0100 Subject: Make push opcodes a specific bit set and add a NOOP opcode By default, a zero initialised set of instructions are NOOPs, which is great. Last two bits of a push opcode is always 01. Rest of the bits are used to distinguish between differing types of push. This makes it easier to inspect on the byte level what type of opcode we have. --- src/inst.h | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/inst.h') diff --git a/src/inst.h b/src/inst.h index 95baaf2..086696a 100644 --- a/src/inst.h +++ b/src/inst.h @@ -17,14 +17,20 @@ typedef enum { - OP_PUSH_BYTE = 1, - OP_PUSH_WORD, - OP_PUSH_FLOAT, -} op_t; + OP_NOOP = 0, + + OP_PUSH_BYTE = 0b0001, + OP_PUSH_WORD = 0b0101, + OP_PUSH_FLOAT = 0b1001, + + OP_HALT, +} opcode_t; + +#define OPCODE_IS_PUSH(OPCODE) (((OPCODE)&1) == 1) typedef struct { - op_t opcode; + opcode_t opcode; data_t operand; } inst_t; -- cgit v1.2.3-13-gbd6f