From 7a3cdff2d404c66a1c842a0311fcc82644790011 Mon Sep 17 00:00:00 2001 From: Speedy_Lex Date: Fri, 24 Apr 2026 14:10:13 +0200 Subject: [PATCH] idk add some bytecode stuff --- build.zig | 1 + src/compiler.c | 0 src/compiler.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 src/compiler.c create mode 100644 src/compiler.h diff --git a/build.zig b/build.zig index af7ed4a..253b34e 100644 --- a/build.zig +++ b/build.zig @@ -20,6 +20,7 @@ pub fn build(b: *std.Build) void { "src/helper.c", "src/lexer.c", "src/parser.c", + "src/compiler.c", "src/main.c", } }); diff --git a/src/compiler.c b/src/compiler.c new file mode 100644 index 0000000..e69de29 diff --git a/src/compiler.h b/src/compiler.h new file mode 100644 index 0000000..dda1b5b --- /dev/null +++ b/src/compiler.h @@ -0,0 +1,56 @@ +#include "types.h" + +typedef enum noomC_InstrType : unsigned char { + NOOMC_INSTR_NOP = 0, + NOOMC_INSTR_LOADC, + NOOMC_INSTR_COPY, + + NOOMC_INSTR_JMP, + NOOMC_INSTR_JC, + + + NOOMC_INSTR_ADD, + NOOMC_INSTR_SUB, + NOOMC_INSTR_NEG, + NOOMC_INSTR_MUL, + NOOMC_INSTR_DIV, + NOOMC_INSTR_MOD, + NOOMC_INSTR_FLOOR_DIV, + NOOMC_INSTR_POW, + + NOOMC_INSTR_EQ, + NOOMC_INSTR_NEQ, + NOOMC_INSTR_LT, + NOOMC_INSTR_LTE, + NOOMC_INSTR_GT, + NOOMC_INSTR_GTE, + + NOOMC_INSTR_NOT, + + NOOMC_INSTR_BAND, + NOOMC_INSTR_BOR, + NOOMC_INSTR_BXOR, + NOOMC_INSTR_BNOT, + NOOMC_INSTR_LSHIFT, + NOOMC_INSTR_RSHIFT, + + NOOMC_INSTR_CONCAT, + NOOMC_INSTR_LEN, + NOOMC_INSTR_GET, + NOOMC_INSTR_SET, + + NOOMC_INSTR_NOP2 = 0xff, +} noomC_InstrType; + +typedef struct noomC_Instr { + noomC_InstrType type; + unsigned char a; + union { + struct { + unsigned char b; + unsigned char c; + }; + unsigned short u; + short s; + }; +} noomC_Instr;