Просматривая набор команд Gameboy, я столкнулся с такими инструкциями, как:
LD A, A
LD B, B
LD C, C
LD B, B
...
Каждая из этих инструкций имеет собственный код операции в этой таблице, что заставляет меня думать, что они имеют некоторое значение из-за ограничений на количество возможных кодов операций.
Сначала я подумал, что это может быть разыменование указателя в этом регистре и сохранение значения в этом указателе (как в этом вопросе), но в эмуляторе LD A, A
реализуется как:
Z80._r.a = Z80._r.a
Они, похоже, не влияют на состояние процессора (просто устанавливают регистры на свое значение) и принимают такое же количество циклов, что и NOP
для выполнения.
Почему эти коды операций включены в набор инструкций и с какой целью они служат?