gameboy ~Z80 处理器中指令 LD A,(C) 的长度
Length of instruction LD A,(C) in gameboy ~Z80 processor
您好,我正在为 Game Boy 编写模拟器。
我使用这个参考:Gameboy CPU (LR35902) instruction set
本文档指出操作码:
0xE2 LD (C),A
和
0xF2 LD A,(C)
长度为 2。
Game Boy CPU Manual表示这些指令分别为:
Put value at address $FF00 + register C into A.
和
Put A into address $FF00 + register C.
我认为它的长度为 1,因为操作码是自给自足的,不需要解释其他值。如果它的长度为 2,那么第二个字节的用途是什么?
你完全正确。 LD (C),A
和 LD A,(C)
是 1 个字节长。
我什至给负责人 (Pastraiser) 发了邮件要求澄清(或者他是否可以修复网站),但我没有得到答复。
另一件困扰我的事情是 prefix CB
被认为是 1 个字节长并且消耗 4 个周期。并且所有扩展指令都被认为是 2 个字节长并消耗 8 个周期(如果它们访问 (HL)
则为 16 个)。将 Prefix CB
下面的 space 留空对我来说更有意义,因此很明显所有扩展指令都已经包括其前缀的大小和处理周期。
另一件困扰我的事情是 STOP
长度是 2。它实际上只有一个字节长。 Gameboy Classic 上存在硬件错误,导致跳过 STOP
之后的指令。所以任天堂开始告诉开发者总是在 STOP
之后添加 NOP
。因此,为了 100% 正确,我认为 STOP
是 (1,4) 而不是 (2,4)。 Gameboy Color 不存在此问题。
您好,我正在为 Game Boy 编写模拟器。
我使用这个参考:Gameboy CPU (LR35902) instruction set
本文档指出操作码:
0xE2 LD (C),A
和
0xF2 LD A,(C)
长度为 2。
Game Boy CPU Manual表示这些指令分别为:
Put value at address $FF00 + register C into A.
和
Put A into address $FF00 + register C.
我认为它的长度为 1,因为操作码是自给自足的,不需要解释其他值。如果它的长度为 2,那么第二个字节的用途是什么?
你完全正确。 LD (C),A
和 LD A,(C)
是 1 个字节长。
我什至给负责人 (Pastraiser) 发了邮件要求澄清(或者他是否可以修复网站),但我没有得到答复。
另一件困扰我的事情是 prefix CB
被认为是 1 个字节长并且消耗 4 个周期。并且所有扩展指令都被认为是 2 个字节长并消耗 8 个周期(如果它们访问 (HL)
则为 16 个)。将 Prefix CB
下面的 space 留空对我来说更有意义,因此很明显所有扩展指令都已经包括其前缀的大小和处理周期。
另一件困扰我的事情是 STOP
长度是 2。它实际上只有一个字节长。 Gameboy Classic 上存在硬件错误,导致跳过 STOP
之后的指令。所以任天堂开始告诉开发者总是在 STOP
之后添加 NOP
。因此,为了 100% 正确,我认为 STOP
是 (1,4) 而不是 (2,4)。 Gameboy Color 不存在此问题。