#include "vm.h" u32 mp; /* memory pointer */ u32 cp; /* code pointer */ u32 pc; /* program counter */ u32 flag; /* flag */ u32 *code; /* code */ u8 *mem; /* memory */ bool step_vm() { u32 instruction = code[pc]; u8 opcode = DECODE_OP(instruction); switch (opcode) { case OP_HALT: { return false; } case OP_CALL: { } case OP_RETURN: { } case OP_SYSCALL: { } case OP_LOAD_IMM: { } case OP_LOAD_UPPER_IMM: { } case OP_LOAD_IND_8: { } case OP_LOAD_IND_16: { } case OP_LOAD_IND_32: { } case OP_LOAD_ABS_8: { } case OP_LOAD_ABS_16: { } case OP_LOAD_ABS_32: { } case OP_LOAD_OFF_8: { } case OP_LOAD_OFF_16: { } case OP_LOAD_OFF_32: { } case OP_STORE_ABS_8: { } case OP_STORE_ABS_16: { } case OP_STORE_ABS_32: { } case OP_STORE_IND_8: { } case OP_STORE_IND_16: { } case OP_STORE_IND_32: { } case OP_STORE_OFF_8: { } case OP_STORE_OFF_16: { } case OP_STORE_OFF_32: { } case OP_MEM_ALLOC: { } case OP_MEM_CPY: { } case OP_MEM_SET_8: { } case OP_MEM_SET_16: { } case OP_MEM_SET_32: { } case OP_REG_MOV: { } case OP_ADD_INT: { } case OP_SUB_INT: { } case OP_MUL_INT: { } case OP_DIV_INT: { } case OP_ABS_INT: { } case OP_NEG_INT: { } case OP_ADD_NAT: { } case OP_SUB_NAT: { } case OP_MUL_NAT: { } case OP_DIV_NAT: { } case OP_ABS_NAT: { } case OP_NEG_NAT: { } case OP_ADD_REAL: { } case OP_SUB_REAL: { } case OP_MUL_REAL: { } case OP_DIV_REAL: { } case OP_ABS_REAL: { } case OP_NEG_REAL: { } case OP_INT_TO_REAL: { } case OP_INT_TO_NAT: { } case OP_NAT_TO_REAL: { } case OP_NAT_TO_INT: { } case OP_REAL_TO_INT: { } case OP_REAL_TO_NAT: { } case OP_BIT_SHIFT_LEFT: { } case OP_BIT_SHIFT_RIGHT: { } case OP_BIT_SHIFT_R_EXT: { } case OP_BIT_AND: { } case OP_BIT_OR: { } case OP_BIT_XOR: { } case OP_JMP_IMM: { } case OP_JMP_ABS: { } case OP_JMP_OFF: { } case OP_JMP_FLAG: { } case OP_JEQ_INT: { } case OP_JNE_INT: { } case OP_JGT_INT: { } case OP_JLT_INT: { } case OP_JLE_INT: { } case OP_JGE_INT: { } case OP_JEQ_NAT: { } case OP_JNE_NAT: { } case OP_JGT_NAT: { } case OP_JLT_NAT: { } case OP_JLE_NAT: { } case OP_JGE_NAT: { } case OP_JEQ_REAL: { } case OP_JNE_REAL: { } case OP_JGE_REAL: { } case OP_JGT_REAL: { } case OP_JLT_REAL: { } case OP_JLE_REAL: { } } /* something went very wrong */ flag = 255; return false; }