108. Rol absolute x

подключить ROL Absolute,X (опкод ``0x3E``).

Урок 108 из 356 · tests/chapter_01_cpu/test_108_ROL_absolute_x.py

На этом шаге завершите последовательность ROL, добавив только адаптер Absolute,X и запись диспетчеризации после урока 107.

Полный пример реализации в производственных местах

`emulator/cpu/opcodes.py::rol_absolute_x`::

def rol_absolute_x(cpu: CPU):
    addr = absolute_x(cpu)
    rol(cpu, addr)

`emulator/cpu/opcodes.py::OPCODE_TABLE`::

0x3E: rol_absolute_x,

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

`absolute_x централизует декодирование little-endian и индексацию X; rol` отвечает только за семантику операции.

Инварианты: потребляются два байта операнда, декодируется 16-битная база, затем прибавляется X; `3E 00 02 с X=0x04 указывает на $0204`, а PC заканчивается на start+3. Поведение C/Z/N примитива памяти остаётся неизменным.

Заблуждение: не индексируйте один байт операнда и не применяйте переполнение нулевой страницы; этот режим индексирует декодированную 16-битную абсолютную базу.

Вне рамок: примитивы ROR начинаются с урока 109, а опкоды ROR — с урока 111; пересечение страниц и поведение чтения/модификации/записи с точностью до такта — более поздняя работа.

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

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