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