#ifndef RZ_VM_H #define RZ_VM_H #include "commons.h" #include "opcodes.h" #include "mod.h" #include "err.h" typedef struct { param_t stack[RZ_STACK_LIMIT]; size_t pc; size_t bp; size_t sp; err_t* err; } vm_t; void vm_init(vm_t* vm, err_t* err); void vm_free(vm_t* vm); param_t vm_pop(vm_t* vm); size_t vm_stack_str(vm_t* vm, char* buffer, size_t size); int vm_exec_mod(vm_t* vm, mod_t* mod); int vm_exec_instr(vm_t* vm, mod_t* mod, Opcode op, param_t param); #endif