我目前正在开发一个 GameBoy 模拟器。在编码时,我开始质疑添加到寄存器如何影响它。
cpu上有8个8位寄存器和4个16位寄存器。8 位寄存器可以组合成 16 位寄存器。这是我在代码中表示它们的方式。
struct Registers{
//8 bit registers
uint8_t a;
uint8_t b;
uint8_t c;
uint8_t d;
uint8_t e;
uint8_t f;
uint8_t h;
uint8_t l;
//16 bit registers
uint16_t af;
uint16_t bc;
uint16_t de;
uint16_t hl;
};
问题:
如果较低的寄存器的值为 0b11111111,我将其加 1。该位是否继续到较高的寄存器,或者它是否环绕到较低的 8 位寄存器的开头。
如果低位寄存器的值为 0b00000000 并且 I sub 1 从它开始,它是否保持为零,或者该位是否回绕到寄存器的顶部。
如果一个高位寄存器的值是 0b00000000 并且 I sub 1 从它,它会影响低位寄存器吗?