198. Php, неявная адресация

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

Урок 198 из 356 · tests/chapter_01_cpu/test_198_PHP_implied.py

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

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

PHP получает P и S напрямую из состояния CPU. Поэтому опкод $08 не имеет операнда и направляется напрямую к `php(cpu)`.

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

from emulator.cpu.instructions import php

OPCODE_TABLE = {
    # existing entries
    0x08: php,
}

Инварианты: сохраните существующие сопоставления; сопоставьте ровно $08 с объектом функции `php`; не используйте обёртку адресации или чтение операнда; читайте один байт опкода и сохраните семантику стека/статуса из шага 197.

Заблуждение: байт после $08 — это не данные статуса; PHP проталкивает текущий P.

Вне рамок: поведение PHP относится к шагу 197, а PLP начинается с шага 199. Изменения проталкиваемого байта PHP не относятся к этому шагу регистрации опкода.

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

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