172. Bcc relativo
conectar BCC con su opcode relativo.
Lección 172 de 356 · tests/chapter_01_cpu/test_172_BCC_relative.py
En este paso, añade estas piezas a `emulator/cpu/opcodes.py`:
from emulator.cpu.instructions import bcc
from emulator.cpu.addressing_modes import relative
def bcc_relative(cpu: CPU):
offset = relative(cpu)
bcc(cpu, offset)
OPCODE_TABLE[0x90] = bcc_relativeLas importaciones pueden integrarse en el grupo de importaciones ya existente del archivo, y la entrada de la tabla va en su literal.
Por qué existe este paso
`CPU.step ya ha consumido el opcode, relative consume y aplica el signo al operando de un byte, y el bcc` del paso 164 lo aplica solo cuando Carry está desactivado.
Invariantes: el opcode `0x90 se resuelve al gestor de un argumento; todos los caminos consumen el operando, de modo que un salto no tomado termina en 0x8002 y un salto de +5 apunta a 0x8007`. El gestor en sí no cambia ninguna flag ni memoria. Idea errónea habitual: el desplazamiento es relativo a PC después del operando, no a la dirección del opcode, y debe obtenerse incluso cuando Carry impide el salto.
Fuera de alcance: los gestores y entradas de tabla de BCS, BEQ, BNE, BPL, BMI, BVC y BVS son los pasos 173-179. El direccionamiento JMP indirecto empieza en el paso 180.
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_172_BCC_relative.py -v