roza/lib/vm.h

29 lines
485 B
C

#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);
void 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