First commit

This commit is contained in:
2017-01-24 13:17:59 +01:00
commit b49c1e543f
9 changed files with 260 additions and 0 deletions

54
vm.cpp Normal file
View File

@@ -0,0 +1,54 @@
#include "vm.h"
enum OPS {
OP_NOP = 0,
OP_PUSH,
OP_POP,
OP_DUP,
OP_LOAD,
OP_STORE,
OP_JMP,
OP_JNT,
OP_JTR,
OP_JSR,
OP_RET,
OP_CALL,
OP_ADD,
OP_SUB,
OP_MUL,
OP_DIV,
OP_MOD,
OP_AND,
OP_OR,
OP_NOT,
OP_NEG,
OP_INC,
OP_EQ,
OP_NEQ,
OP_LT,
OP_GT
};
typedef void(*t_extcall)(t_stack&);
t_extcall external_calls[100];
int numcallbacks = 0;
const unsigned char* vm_program = nullptr;
int vm_pc = 0;
void vm_init(const unsigned char* program) {
vm_program = program;
vm_pc = 0;
}
void vm_step() {
}
void vm_register_call(void(*callback)(t_stack&)) {
external_calls[numcallbacks++] = callback;
}