相关疑难解决方法(0)

用C或C++编写图形化Z80仿真器

我想有兴趣为Z80处理器编写自己的简单模拟器.我对这种类型的编程没有经验.使用基于C语言的我很好,因为他们是我最熟悉的.

我需要做些什么以及哪些好的教程/参考资料可以帮助我完成这个项目?

我还想要一个为我的TI-84 Plus计算器编写ROM转储应用程序的教程,这样我就可以将它的ROM用于这个仿真器.

c c++ z80 emulation

13
推荐指数
4
解决办法
8023
查看次数

关于模拟CPU时的循环计数精度的问题

我打算在接下来的几个月里创建一个Sega Master System模拟器,作为Java中的一个爱好项目(我知道它不是最好的语言,但我发现它很舒服,并且作为一个频繁的用户Windows和Linux我认为跨平台应用程序会很棒).我的问题是关于循环计数;

我查看了另一个Z80模拟器的源代码,以及其他模拟器,特别​​是执行循环引起了我的兴趣 - 当它被调用时,一个int作为参数传递(假设以1000为例).现在我得到每个操作码执行不同的循环次数,并且当执行这些循环时,循环次数从总体数字减少.一旦剩余的周期数<= 0,执行循环就完成了.

我的问题是,这些仿真器中的许多都没有考虑到这样一个事实,即要执行的最后一条指令可以将周期数推到负值 - 这意味着在执行循环之间,最终可能会说1002个周期执行而不是1000.这是重要的吗?一些仿真器通过补偿下一个执行循环来解决这个问题,有些则不能 - 哪种方法最好?请允许我说明一下我的问题,因为我并不擅长将自己放在一边:

public void execute(int numOfCycles) 
{ //this is an execution loop method, called with 1000.
   while (numOfCycles > 0)
   {
      instruction = readInstruction();
      switch (instruction)
      {
         case 0x40: dowhatever, then decrement numOfCycles by 5;
         break; 
         //lets say for arguments sake this case is executed when numOfCycles is 3.
      }
}
Run Code Online (Sandbox Code Playgroud)

在此特定循环示例结束后,numOfCycles将为-2.这只会是一个小小的不准确,但在人们的经历中总体上是否重要?我很欣赏任何人对这一点的见解.我计划在每帧之后中断CPU,因为这似乎合适,所以1000个周期很低我知道,这只是一个例子.

非常感谢,菲尔

z80 emulation cpu-cycles

6
推荐指数
2
解决办法
1049
查看次数

标签 统计

emulation ×2

z80 ×2

c ×1

c++ ×1

cpu-cycles ×1