Сейчас я занимаюсь разработкой эмулятора GameBoy. Во время кодирования я начал задаваться вопросом, как на это влияет добавление в регистр.
На процессоре восемь восьмибитных регистров и четыре 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, и я слагаю 1 из него, делает этовлияет на нижний регистр.