我想写简单的8088仿真器。但我不明白如何将8088内核与视频子系统连接。
我想到主回路:
while (TRUE)
{
execute_cpu_cycles_per_scanline() ;
paint_scanline() ;
}这种方法适用于CPU和图形仿真吗?还有其他方法吗?任何好的解释,为什么我不能使用不同的线程用于CPU和视频。如何处理这个问题模拟器,如QEMU或其他(x86)。
谢谢。
发布于 2013-08-12 20:41:40
嗯,有那么多x86处理器,随着时间的推移,对时钟周期的指令变得有些不确定了。对于较老的cpus,如8088和6502等,如果记录在案并准确,您可以简单地计算每条指令的时钟周期,以及当模拟时钟周期的数量等于或大于scanline绘制时间或中断间隔或其他任何东西时,您可以做您建议的事情。例如,如果您查看mame或其他仿真器,它们基本上就是这样做的,请使用指令时钟周期来确定经过的时间,并从该时间管理外围设备中的模拟时间。
假设您希望在qemu上运行linux,您不希望通过执行指令来决定时间的模拟时钟,您希望将该时钟与硬件系统时钟同步。同样,您可能希望根据实际的硬件刷新速率而不是模拟的刷新速率来同步刷新速率。
这是两个极端。你需要在中间做一件或另一件事。
https://stackoverflow.com/questions/18196132
复制相似问题