200. Plp, неявная адресация

зарегистрировать PLP с неявной адресацией.

Урок 200 из 356 · tests/chapter_01_cpu/test_200_PLP_implied.py

Предварительное условие: шаг 199 добавил `plp. На этом шаге измените только emulator/cpu/opcodes.py, импортировав plp и добавив его запись в OPCODE_TABLE`.

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

PLP получает своё значение из стека, выбираемого S. Опкод $28 не имеет операнда и должен направляться напрямую к `plp(cpu)`.

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

from emulator.cpu.instructions import plp

OPCODE_TABLE = {
    # existing entries
    0x28: plp,
}

Инварианты: сохраните все существующие сопоставления; сопоставьте ровно $28 с `plp`; не используйте обёртку режима адресации; читайте только байт опкода; сохраните семантику замены и маскирования из шага 199.

Заблуждение: байт после $28 — это следующая инструкция, а не байт статуса для восстановления; статус берётся исключительно из увеличенного слота стека.

Вне рамок: поведение PLP — это шаг 199. TXS/TSX относятся к шагам 201-204. Более позднее поведение Break/ONE не должно предвосхищаться.

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

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