我开始使用这个v1.7规范编写一个DCPU-16模拟器。我开始制定架构,我不喜欢使用非常长的开关语句的事实。这是我第一次编写模拟器,所以我不知道是否有更好的方法。虽然开关并不大,因为DCPU的操作码数量很少(而且实际上我还没有实现这些指令),但我可以想象,如果我为一个更大的指令集编写一个仿真程序,开关语句将是巨型。
随便谁,这是我的密码。
编辑:我忘了把我的问题说清楚:
发布于 2013-06-19 09:36:56
在我看来,这种方法是合理的。我当然会这么做(我编写了一些CPU模拟器和类似类型的代码)。
最近的选择是一组函数指针,但有些情况可能相当简单(例如,cpu_regs.flags &= ~CARRY或if (cpu_regs.flags & CARRY) do_rel_jump(next_byte());,因此使用函数指针会减慢速度。
你可以把所有的“没有指定的操作”聚集到一个地方,这将使它的行数大大缩短,但是除非你把它放在default:中,否则情况的数量当然还是一样的。
https://stackoverflow.com/questions/17187712
复制相似问题