170. Инструкция bvc
реализовать поведение ветвления при сброшенном флаге переполнения.
Урок 170 из 356 · tests/chapter_01_cpu/test_170_instruction_bvc.py
Зачем нужен этот шаг
BVC проверяет существующее условие переполнения знаковой арифметики и выполняет ветвление, когда этот флаг сброшен, не изменяя его.
На этом шаге, после BMI, добавьте в точности
`emulator/cpu/instructions.py::bvc`::
def bvc(cpu: CPU, offset: int):
if not cpu.flags.get_overflow_flag():
cpu.pc = (cpu.pc + offset) & 0xFFFFЕсли флаг сброшен, она прибавляет относительное смещение со знаком к PC после операнда и маскирует цель до 16-битного адресного пространства.
Инварианты: при сброшенном флаге переполнения ветвление выполняется; при установленном флаге переполнения PC не изменяется. Инструкция не изменяет флаги, другие регистры или память. Заблуждение: BVC не сбрасывает флаг переполнения и не принимает решение по флагу переноса или знаку смещения.
Вне рамок этого шага: дополняющая инструкция BVS — это урок 171. Импорты функций ветвления, обработчики кодов операций относительной адресации и записи таблицы — уроки 172-179.
Запустить этот урок
uv run pytest tests/chapter_01_cpu/test_170_instruction_bvc.py -v