diff options
-rw-r--r-- | src/main.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -35,20 +35,26 @@ typedef struct } stack; } vm_t; -void vm_push_byte(vm_t *vm, byte b) +typedef union +{ + byte as_byte; + word as_word; +} data_t; + +void vm_push_byte(vm_t *vm, data_t b) { if (vm->stack.pointer >= VM_STACK_MAX) return; - vm->stack.data[vm->stack.pointer++] = b; + vm->stack.data[vm->stack.pointer++] = b.as_byte; } -void vm_push_word(vm_t *vm, word w) +void vm_push_word(vm_t *vm, data_t 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); + memcpy(vm->stack.data + vm->stack.pointer, &w.as_word, sizeof(w.as_word)); + vm->stack.pointer += sizeof(w.as_word); } int main(void) |