036. Инструкция stx
Добавление базовой инструкции STX.
Урок 36 из 356 · tests/chapter_01_cpu/test_036_instruction_stx.py
Файл для изменения
emulator/cpu/instructions.pyРасположение
instructions.stx, beside ldxПочему этот шаг существует
STX вводит парную инструкцию сохранения для LDX. Она следует границе, установленной STA: базовая инструкция получает уже вычисленный адрес назначения и записывает регистр через шину CPU, не изменяя флаги.
Полная примерная реализация
# emulator/cpu/instructions.py
def stx(cpu: CPU, address: int):
value = cpu.x
cpu.bus.write(address, value)Важные инварианты
- stx получает адрес, а не значение
- записываемое значение — это X, а запись идёт через cpu.bus.write
- X и флаги процессора остаются без изменений
Распространённое заблуждение
Не обновляйте Zero или Negative на основе X. Инструкции сохранения только записывают в память, даже если сохраняемый байт равен $00 или имеет установленный бит 7.
Вне рамок
- все обработчики опкодов STX и записи в таблице опкодов
- изменения во вспомогательных функциях режимов адресации
- тайминг циклов и аппаратные эффекты со стороны записи
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_036_instruction_stx.py -v