Как сложение и вычитание влияет на состояния регистров в GameBoy? - PullRequest
0 голосов
/ 02 декабря 2019

Сейчас я занимаюсь разработкой эмулятора 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;
};

ВОПРОСЫ:

  1. Если нижний регистр имеет значение 0b11111111, и я добавляю 1 к нему. Переносит ли этот бит в верхний регистр или переносится в начало младшего 8-битного регистра.

  2. Если младший регистр имеет значение 0b00000000 и I sub 1от него, остается ли он нулем, или этот бит переносится в верхнюю часть регистра.

  3. Если старший регистр имеет значение 0b00000000, и я слагаю 1 из него, делает этовлияет на нижний регистр.

...