030. Instruction ldx
Добавление базовой инструкции LDX.
Урок 30 из 356 · tests/chapter_01_cpu/test_030_instruction_ldx.py
Файл для обновления
emulator/cpu/instructions.pyРасположение
instructions.ldx, beside lda and staЗачем нужен этот шаг
LDX открывает следующее семейство инструкций загрузки, сохраняя границу между инструкцией и опкодом, установленную для LDA. Базовая инструкция получает уже разрешённое значение, сохраняет его в X и применяет те же правила Zero/Negative, что и lda.
Полная реализация примера
# emulator/cpu/instructions.py
def ldx(cpu, value) -> None:
cpu.x = value
cpu._update_zero_and_negative_flags(cpu.x)Важные инварианты
- ldx получает значение, а не адрес
- X получает значение, а A и Y остаются без изменений
- Zero устанавливается ровно для $00 и сбрасывается в остальных случаях
- Negative повторяет бит 7 и сбрасывается, когда бит 7 равен нулю
Распространённое заблуждение
Не выбирайте операнд и не читайте шину внутри ldx; обработчики опкодов выполнят адресацию и доступ к памяти до вызова этой инструкции.
Вне рамок
- все обработчики опкодов LDX и записи в таблице опкодов
- интеграция zero-page,Y с опкодом
- последующий рефакторинг FlagsHandler
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_030_instruction_ldx.py -v