timesynk/test/vm.h

43 lines
750 B
C

enum {
ASS_INT = 1, // =
MIN_INT = 2, // -
ADD_INT = 3, // +
MUL_INT = 4, // *
DIV_INT = 5, // /
EQ_INT = 20, // ==
LT_INT = 21, // <
LE_INT = 22, // <=
GT_INT = 23, // >
GE_INT = 24, // >=
JUMP = 100,
RETURN = 101,
};
struct vm_Machine {
struct vm_Stack *stack; // global memory
struct vm_Function *func; // global functions
};
struct vm_Stack {
char *memory;
int bytes;
};
struct vm_Function {
struct vm_Stack p_stack; // parameter storage
struct vm_Stack v_stack; // "static" storage - i.e., explicitly defined numbers
struct vm_Stack stack; //
struct vm_Operation *ops; // array of ops
int op_size;
};
struct vm_Operation {
int op;
char *stack_a;
int pos_a;
char *stack_b;
int pos_b;
};