079. Dec absolute x
подключить DEC Absolute,X (`0xDE`).
Урок 79 из 356 · tests/chapter_01_cpu/test_079_DEC_absolute_x.py
На этом шаге добавьте emulator/cpu/opcodes.py:dec_absolute_x и OPCODE_TABLE[0xDE] после работы над DEC из уроков 076–078.
Зачем нужен этот шаг
Скомпоновать существующий резолвер адреса absolute-X с примитивом DEC вместо дублирования индексации, обращения к шине или логики флагов.
Рекомендуемая реализация в emulator/cpu/opcodes.py:
def dec_absolute_x(cpu: CPU):
addr = absolute_x(cpu)
dec(cpu, addr)Добавьте следующую запись в существующую OPCODE_TABLE:
0xDE: dec_absolute_x,Инварианты: двухбайтовый базовый адрес имеет порядок little-endian; X участвует только в вычислении эффективного адреса и не изменяется; переход через границу страницы допустим; PC продвигается на два байта операнда; DEC сохраняет 8-битный результат и изменяет только Z/N.
Типичная ошибка: эта инструкция декрементирует память по адресу base + X, а не регистр X. Декремент регистра — это последующая инструкция DEX.
Вне области действия: примитивы INX/DEX и их подразумеваемые опкоды — это уроки 080–083; учёт тактов не входит в этот шаг.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_079_DEC_absolute_x.py -v