Files
intel8086/main.cpp

36 lines
697 B
C++

#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] << "<filename>\n";
return 1;
}
char* filename = argv[1];
if (!load_binary(filename, 0x0100)) {
return 1;
}
init_instr_table();
emulate();
return 0;
}