我在考虑编写简单的8088模拟器。但我无法理解如何将8088核心与视频子系统连接起来。
我在思考主循环:
while (TRUE)
{
execute_cpu_cycles_per_scanline() ;
paint_scanline() ;
}
此方法是否适合CPU和图形仿真?还有其他方法吗?任何好的解释为什么我不能为CPU和视频使用不同的线程。如何处理像QEMU或其他人(x86)这样的问题模拟器。
感谢。
答案 0 :(得分:0)
有很多x86处理器,随着时间的推移,时钟周期的指令变得有些不确定。对于像8088和6502等较老的cpus,如果记录和准确,您可以简单地计算每条指令的时钟周期,并且当模拟时钟周期的数量等于或大于扫描线绘制时间或某些中断间隔或任何时候然后你可以做你想要的。如果你看看例如mame或其他基本上如何做的仿真器,请使用指令时钟周期来确定经过的时间,并从中管理外设中的仿真时间。
假设您想在qemu上运行linux,您不希望模拟时钟告诉时间由执行指令决定,您可能希望将该时钟与硬件系统时钟同步。同样,您可能希望根据实际硬件刷新率而不是模拟刷新率来同步刷新率。
所以那是两个极端。你需要做一个或另一个或两者之间的事情。