减少仿真器中switch语句的大小?

时间:2013-06-19 09:29:59

标签: c++ switch-statement emulation dcpu-16

我开始使用this v1.7 spec编写DCPU-16仿真器。我开始放下架构,我不喜欢我使用很长的switch语句这一事实。这是我第一次编写模拟器,所以我不知道是否有更好的方法。虽然开关不是 大,但是由于DCPU的操作码数量很少(事实上我还没有实际执行过指令),我可以想象我是否正在编写模拟器一个更大的指令集,switch语句将巨大

Anywhom,here's my code

编辑:我忘记了我的问题:

  • 设计模拟器是否有比使用大型交换机更好的方法?

1 个答案:

答案 0 :(得分:2)

这种方法对我来说似乎是合理的。我当然是这样做的(我已经编写了一些CPU模拟器和类似的代码类型)。

最近的替代方案是一组函数指针,但是你的一些情况可能相当简单(例如cpu_regs.flags &= ~CARRYif (cpu_regs.flags & CARRY) do_rel_jump(next_byte());,所以使用函数指针会减慢你的速度。

你可以把所有“尚未指定的操作”捆绑到一个地方,这会使它的行数减少很多,但案例的数量当然仍然是相同的[除非你把它放在{{ 1}}]。