В настоящее время я делаю эмулятор NES на Java. Мое ядро 6502 работает на 99%, за исключением некоторых мелких проблем. Дело в том, что я эмулирую 6502 для NES, но я никогда не интересовался им так, как что-то вроде PS1, N64 или DOS. Я всегда хотел эмулировать консоль / систему, которая способна делать больше, чем просто рисовать на экране простые 2D-спрайты, такие как вышеупомянутые системы.
Я хочу спросить: что затрудняет эмуляцию процессора x86 по сравнению с 6502? Единственное, что я могу придумать, - это огромный набор инструкций x86 и то, что эмулятор x86 должен быть немного более запрограммирован на эффективность, а не на удобочитаемость кода. Я спрашиваю об этом, потому что я просмотрел исходный код DosBox, и по сравнению с практически любым эмулятором 6502 с открытым исходным кодом, источник ядра x86 для DosBox даже отдаленно не понятен мне. Почему возникает такая большая разница в сложности, когда все, что делает процессор, - это просматривает список кодов операций и систематически их выполняет?