081. Inx, неявная адресация

Подключить опкод INX с неявной адресацией.

Урок 81 из 356 · tests/chapter_01_cpu/test_081_INX_implied.py

На этом шаге добавьте только интеграцию опкода INX после того, как тест 080 предоставил instructions.inx.

Расположение в продакшн-коде и символы

emulator/cpu/opcodes.py: imported `inx` and `OPCODE_TABLE[0xE8]`

Зачем нужен этот шаг

INX использует неявную адресацию, поэтому диспетчеризация может вызывать функцию инструкции напрямую. Обёртка или помощник режима адресации не нужны.

Предлагаемая реализация для этого шага

# emulator/cpu/opcodes.py
from emulator.cpu.instructions import inx  # alongside existing imports

OPCODE_TABLE = {
    # ... existing entries ...
    0xE8: inx,
}

Важные инварианты

  • опкод 0xE8 диспетчеризуется точно в функцию inx(cpu)
  • байт операнда не считывается, поэтому CPU.step продвигает PC на один байт
  • переполнение регистра и обновление флагов Z/N по-прежнему принадлежат inx из теста 080

Частое заблуждение

Не создавайте обёртку inx_implied; инструкции с неявной адресацией могут быть прямыми записями в таблице, и обёртка не добавила бы никакого поведения декодирования.

Вне рамок

  • поведение инструкции dex из теста 082 и её отображение DEX в тесте 083
  • последующие инструкции INY/DEY и инструкции сдвига
  • тайминги циклов

Запустить этот урок

uv run pytest tests/chapter_01_cpu/test_081_INX_implied.py -v