207. Неявные опкоды управления флагами

подключить неявные опкоды управления флагами.

Урок 207 из 356 · tests/chapter_01_cpu/test_207_flag_control_implied_opcodes.py

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

На этом шаге обновите импорт инструкций и `OPCODE_TABLE в emulator/cpu/opcodes.py. Функции из шага 206 становятся исполняемыми через emulator/cpu/cpu.py::CPU.step`.

Предлагаемая реализация

# Add clc, sec, cli, sei, cld, sed, clv to the instruction import.
OPCODE_TABLE = {
    # existing entries
    0x18: clc,
    0x38: sec,
    0x58: cli,
    0x78: sei,
    0xD8: cld,
    0xF8: sed,
    0xB8: clv,
}

Инвариант: каждое отображение диспетчеризует напрямую в операцию с одним аргументом; каждая инструкция занимает один байт, поэтому одна лишь выборка опкода продвигает PC к следующему байту, и меняется только целевой флаг. Распространённое заблуждение — добавить режим адресации, потребляющий операнд, либо перепутать местами пары опкодов установки/сброса.

Вне рамок: NOP и опкод $EA относятся к шагам 208-209, а семантика доставки прерываний — это более позднее поведение.

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

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