From 49a85a20d830fb197478ed6cd56f3f1554dba61b Mon Sep 17 00:00:00 2001 From: Aryadev Chavali Date: Sun, 15 Oct 2023 04:35:07 +0100 Subject: Added functions to push a byte and a word Maybe I should make a union for the type, so I can dispatch via function pointers? --- src/main.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src') diff --git a/src/main.c b/src/main.c index 6f468cb..30abda7 100644 --- a/src/main.c +++ b/src/main.c @@ -12,6 +12,7 @@ #include #include +#include typedef uint64_t u64; typedef uint32_t u32; @@ -34,6 +35,22 @@ typedef struct } stack; } vm_t; +void vm_push_byte(vm_t *vm, byte b) +{ + if (vm->stack.pointer >= VM_STACK_MAX) + return; + vm->stack.data[vm->stack.pointer++] = b; +} + +void vm_push_word(vm_t *vm, word w) +{ + // NOTE: Relies on sizeof measuring in bytes + if (vm->stack.pointer + sizeof(w) >= VM_STACK_MAX) + return; + memcpy(vm->stack.data + vm->stack.pointer, &w, sizeof(w)); + vm->stack.pointer += sizeof(w); +} + int main(void) { puts("Hello, world!"); -- cgit v1.2.3-13-gbd6f