First commit
This commit is contained in:
54
vm.cpp
Normal file
54
vm.cpp
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user