30 lines
370 B
C
30 lines
370 B
C
#ifndef VM_H
|
|
#define VM_H
|
|
|
|
#include "common.h"
|
|
|
|
#include "chunk.h"
|
|
#include "gc.h"
|
|
#include "object.h"
|
|
|
|
enum {
|
|
OP_NOP = 0,
|
|
OP_RETURN,
|
|
OP_CONST,
|
|
};
|
|
|
|
#define STACK_SIZE 256
|
|
|
|
typedef struct Vm {
|
|
Gc gc;
|
|
O stack[256], *sp;
|
|
U rstack[256], *rsp;
|
|
U8 *ip;
|
|
} Vm;
|
|
|
|
V vm_init(Vm *);
|
|
V vm_push(Vm *, O);
|
|
O vm_pop(Vm *);
|
|
O vm_peek(Vm *);
|
|
V vm_run(Vm *, Bc *, I);
|
|
#endif
|