From f80e73ee8d7f7b68f403033001c632e91cb5ac68 Mon Sep 17 00:00:00 2001 From: ubq323 Date: Mon, 31 Jul 2023 18:51:46 +0100 Subject: bytecode vm start, can print constants currently --- vm.h | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 vm.h (limited to 'vm.h') diff --git a/vm.h b/vm.h new file mode 100644 index 0000000..7f76e05 --- /dev/null +++ b/vm.h @@ -0,0 +1,42 @@ +#ifndef _vm_h +#define _vm_h + +#include +#include +#include + +#include "val.h" + +void *M(void *p, size_t sz); + +typedef struct { + // bytecode + size_t blen; + size_t bcap; + uint8_t *b; + // constants + size_t clen; + size_t ccap; + Val *c; +} Chunk; +Chunk chunk_new(); +size_t chunk_wbc(Chunk *ch, uint8_t byte); +size_t chunk_wconst(Chunk *ch, Val v); + +#define STACKSIZE 128 +typedef struct { + Chunk *ch; + size_t ip; + Val stack[STACKSIZE]; + size_t sp; +} Vm; +Vm vm_new(Chunk *ch); + +typedef enum { + OP_RET, + OP_LOADK, + OP_PRINT, +} Op; + + +#endif -- cgit v1.2.3