179. Bvs relativo
conectar BVS con su opcode relativo.
Lección 179 de 356 · tests/chapter_01_cpu/test_179_BVS_relative.py
Requisito previo: el paso 171 añadió `instructions.bvs. En este paso, añade estas piezas a emulator/cpu/opcodes.py`:
from emulator.cpu.instructions import bvs
def bvs_relative(cpu: CPU):
offset = relative(cpu)
bvs(cpu, offset)
OPCODE_TABLE[0x70] = bvs_relativeIntegra la importación y la asignación en las estructuras agrupadas ya existentes.
Por qué existe este paso
`relative consume y aplica el signo al desplazamiento, y luego el instructions.bvs` del paso 171 salta desde el PC posterior al operando cuando Overflow está activado.
Invariantes: `0x70` se asigna a un gestor de un argumento y consume su operando en ambos caminos; con Overflow activado se aplica el desplazamiento, y con Overflow desactivado PC se queda tras el operando. Las flags y la memoria no cambian. Idea errónea habitual: BVS no activa Overflow, y un salto no tomado sigue ocupando y consumiendo dos bytes de instrucción, incluido su opcode.
Fuera de alcance: el paso 180 añade de forma independiente `addressing_modes.indirect para JMP. La instrucción jmp` y las API de opcode JMP absoluto/indirecto llegan solo en los pasos posteriores 181-183 y no deben añadirse aquí.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_179_BVS_relative.py -v