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