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