054. Adc immediate

Conectar ADC immediate (opcode $69) al despacho de la CPU.

Lección 54 de 356 · tests/chapter_01_cpu/test_054_ADC_immediate.py

Archivo a actualizar

emulator/cpu/opcodes.py

Símbolos a crear/actualizar

opcodes.adc_immediate
OPCODE_TABLE[$69]
the `adc` instruction import

Por qué existe este paso

El test 053 proporcionó aritmética sobre un valor ya resuelto. El modo immediate proporciona directamente el siguiente byte del programa, así que este manejador pasa el valor devuelto por immediate(cpu) directamente a adc.

Implementación de ejemplo completa

# emulator/cpu/opcodes.py
from emulator.cpu.instructions import ..., adc

def adc_immediate(cpu):
    value = immediate(cpu)
    adc(cpu, value)

OPCODE_TABLE = {
    # ...existing entries...
    0x69: adc_immediate,
}

Invariantes importantes

  • el manejador acepta solo cpu
  • el modo immediate consume exactamente un byte de operando
  • PC avanza dos bytes en total: opcode más operando
  • el manejador delega toda la aritmética y los cambios de banderas en adc

Concepto erróneo habitual

No trates el byte immediate como una dirección ni leas el bus una segunda vez; immediate(cpu) ya devuelve el valor del operando.

Fuera de alcance

  • todos los opcodes de ADC direccionados a memoria
  • cambios en adc o en los ayudantes de direccionamiento
  • la contabilidad de ciclos

Ejecutar esta lección

uv run pytest tests/chapter_01_cpu/test_054_ADC_immediate.py -v