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