我在不止一个地方看到过 - 以下的模仿方式
即循环被传递到模拟函数
int CPU_execute(int cycles) {
int cycle_count;
cycle_count = cycles;
do {
/* OPCODE execution here */
} while(cycle_count > 0);
return cycles - cycle_count;
}
Run Code Online (Sandbox Code Playgroud)
我很难理解为什么你会采用这种方法来模拟,即为什么你会模仿一定数量的周期?你能举出一些这种方法有用的场景吗?
衷心感谢任何帮助!
仿真器倾向于愚弄为多个芯片设备编写的软件 - 就Z80和最畅销的设备而言,除了CPU之外,你可能至少谈论的是图形芯片和声音芯片.
在现实世界中,这些芯片都同时发挥作用.将有一些总线逻辑允许他们所有人进行通信,但他们在其他人的世界中.
您通常不会将不同芯片的仿真作为并发进程运行,因为执行同步事件的成本太高,尤其是在通常的安排中,在几个芯片之间共享类似RAM的块.
因此,最基本的方法是协同多任务处理不同的芯片 - 运行Z80几个周期,然后运行图形芯片相同的时间等,无限制.这就是运行n个循环和返回的方法来自的地方.
它通常不是再现真实计算机总线行为的准确方法,但它易于实现,而且通常可以欺骗大多数软件.
在您发布的特定代码中,作者进一步确定仿真将循环次数直到下一条整个指令的结尾.这又是关于实现的简单性,而不是与真实机器的实际内部有关.返回实际运行的周期数,以便其他子系统可以尝试进行调整.
| 归档时间: |
|
| 查看次数: |
735 次 |
| 最近记录: |