097. Lsr accumulator
Добавить опкод LSR Accumulator.
Урок 97 из 356 · tests/chapter_01_cpu/test_097_LSR_accumulator.py
На этом шаге поведение с аккумулятором из теста 096 раскрывается через диспетчеризацию опкодов.
Файл и символы
emulator/cpu/opcodes.py: imported lsr_a, OPCODE_TABLE[0x4A]Зачем нужен этот шаг
Тест 096 определил поведение с аккумулятором. Этот переход обеспечивает прямой доступ диспетчеризации CPU к этой функции, поскольку режим с аккумулятором не имеет операнда или декодирования адреса.
Предлагаемая реализация для этого шага
# emulator/cpu/opcodes.py
from emulator.cpu.instructions import lsr_a
OPCODE_TABLE = {
# existing entries unchanged
0x4A: lsr_a,
}Важные инварианты
- таблица напрямую отображается на
instructions.lsr_a; обёртка не нужна - ни один вспомогательный обработчик адресации не считывает байты
- CPU.step уже считал опкод, поэтому PC увеличивается ровно на один байт
- изменяться могут только A и C/Z/N
Распространённое заблуждение
Режим с аккумулятором — это не режим нулевой страницы с неявным адресом; у 0x4A нет операнда.
Вне рамок
- опкоды LSR для памяти в тестах 098-101
- изменения в диспетчеризации CPU или
lsr_a - точность тактов
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_097_LSR_accumulator.py -v