我目前正在开发GameBoy模拟器。在编码时,我开始怀疑添加到寄存器中会如何影响它。
cpu上有八个8位寄存器和四个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并且我从中减去1,它是否保持为零,或者该位是否回绕到寄存器的顶部。
-
如果一个高位寄存器的值为0b00000000并且我从中减去1,它会影响低位寄存器吗。