我正在编写一个简单的 GB 模拟器(哇,现在这是新的东西,不是吗),因为我真的在 emu 中迈出了第一步。
我似乎不明白的是如何正确实现 CPU 周期和无条件跳转。
如果我有一个基本循环,请考虑命令 JP nn(指出的无条件跳转到内存地址),例如 JP 1000h:
increment PC
read opcode
execute command
然后在读取 JP 操作码并执行命令后(从内存中读取 1000h 并设置 PC = 1000h),PC 会递增并变为 1001h,从而导致仿真不良。
tl; dr 当有增加 PC 的 cpu 循环时,您如何模拟模拟器中的跳转,以使 PC 值保持正确?