idk add some bytecode stuff

This commit is contained in:
2026-04-24 14:10:13 +02:00
parent 4d2ae0aa2e
commit 7a3cdff2d4
3 changed files with 57 additions and 0 deletions

View File

@@ -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",
}
});

0
src/compiler.c Normal file
View File

56
src/compiler.h Normal file
View File

@@ -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;