104. Rol accumulator
раскрыть ROL A как опкод ``0x2A``.
Урок 104 из 356 · tests/chapter_01_cpu/test_104_ROL_accumulator.py
На этом шаге, после того как уроки 102-103 определили `rol и rol_a`, добавьте импорты ROL, необходимые опкодам, и запись диспетчеризации для аккумулятора. Последующие режимы памяти и ROR остаются в своих пронумерованных шагах.
Предлагаемая реализация в производственных местах
Список импортов `emulator/cpu/opcodes.py` пополняется::
rol, rol_a`emulator/cpu/opcodes.py::OPCODE_TABLE` пополняется::
0x2A: rol_a,Зачем нужен этот шаг
Режиму аккумулятора не нужен адаптер, потому что `rol_a(cpu)` уже соответствует сигнатуре обработчика опкода.
Инварианты: выборка `0x2A продвигает PC на один шаг перед диспетчеризацией; rol_a` не потребляет операнд, поэтому итоговый PC равен start+1, вращается только A, а его флаги C/Z/N сохраняют семантику урока 103.
Заблуждение: не создавайте обёртку режима адресации и не вызывайте `rol с A. Режим аккумулятора занимает один байт и напрямую отображается на rol_a`.
Вне рамок: адаптеры опкодов памяти `0x26, 0x36, 0x2E и 0x3E` — уроки 105-108; вся диспетчеризация ROR — с урока 111 и далее.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_104_ROL_accumulator.py -v