与6502相比,在模拟x86体系结构时会出现什么问题?
目前,我正在用Java制作一个NES模拟器。除了一些小问题外,我的6502核心可以工作99%。问题是,我正在为NES模拟6502,但我从来没有像对PS1、N64或DOS这样的产品那样对它感兴趣。我一直想模拟一个控制台/系统,它能够做的不仅仅是在屏幕上绘制一些简单的2D精灵,就像前面提到的系统一样与6502相比,在模拟x86体系结构时会出现什么问题?,x86,dos,cpu,emulation,6502,X86,Dos,Cpu,Emulation,6502,目前,我正在用Java制作一个NES模拟器。除了一些小问题外,我的6502核心可以工作99%。问题是,我正在为NES模拟6502,但我从来没有像对PS1、N64或DOS这样的产品那样对它感兴趣。我一直想模拟一个控制台/系统,它能够做的不仅仅是在屏幕上绘制一些简单的2D精灵,就像前面提到的系统一样 我想问的是:与6502相比,是什么让x86处理器这样的东西难以模仿?我唯一能想到的就是庞大的x86指令集,x86仿真器的编程必须更加高效,而不是代码的可读性。我问这个问题是因为我看过DosBox的源代码
我想问的是:与6502相比,是什么让x86处理器这样的东西难以模仿?我唯一能想到的就是庞大的x86指令集,x86仿真器的编程必须更加高效,而不是代码的可读性。我问这个问题是因为我看过DosBox的源代码,与几乎所有6502开源仿真器相比,DosBox的x86内核的源代码对我来说甚至一点都不可理解。当处理器所做的只是查找操作码列表并系统地执行它们时,为什么复杂性会有如此大的差异?正如您所提到的,x86有一个相当广泛的指令集。拥有5个寄存器和50条指令(比如6502)的小型8位微处理器与支持CPU(比如x86)的简陋、陈旧、CISC、32位、多用户操作系统之间有着天壤之别 x86处理器更复杂,因为它们:
- CISC意味着许多指令执行复杂的操作,可能需要许多周期
- 倾向于支持FPU
- 具有多级缓存
- 有一个预取输入队列
- 有很多向后兼容性支持
- 支持分页
- 多个特权级别