#include "instructions.h" void emulate() { while (1) { uint32_t addr = physical_addr(CS, IP); uint8_t opcode = ram[addr]; instrHandler handler = instr_table[opcode]; IP++; if (handler) handler(); else { std::cout << "unknown opcode " << std::hex << opcode << "\n"; break; } } } int main(int argc, char* argv[]) { CS = 0x0000; IP = 0x0000; if (argc < 2) { std::cerr << "usage: " << argv[0] << "\n"; return 1; } char* filename = argv[1]; if (!load_binary(filename, 0x0100)) { return 1; } init_instr_table(); emulate(); return 0; }