187. Rts implícito

conectar el opcode RTS implícito $60.

Lección 187 de 356 · tests/chapter_01_cpu/test_187_RTS_implied.py

Requisito previo: el paso 186 aportó `rts. En este paso, añade su importación y su mapeo directo en la tabla en emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import rts

OPCODE_TABLE = {
    # existing entries...
    0x60: rts,
}

Opcode

0x60 -> RTS

Objetivo

añadir el opcode 0x60 a OPCODE_TABLE.

Guía para el estudiante

RTS usa direccionamiento implícito. Eso significa que el opcode no tiene bytes de operando. La instrucción obtiene toda la información que necesita de la pila de la CPU.

Ejemplo

60 -> RTS

Pasos de ejecución

1. CPU.step() fetches opcode 0x60.
2. OPCODE_TABLE dispatches directly to rts(cpu).
3. RTS pulls the return address from the stack.
4. RTS sets PC to pulled_address + 1.

Error común

No obtengas un byte de operando para RTS. Es una instrucción implícita.

Por qué existe este paso

`CPU.step ya ha consumido el único byte de opcode, y rts` obtiene su palabra de retorno de la pila, así que no hace falta ningún envoltorio ni modo de direccionamiento. Invariantes: $60 se mapea directamente a la función de un solo argumento; el despacho no consume $8001; RTS por sí sola realiza los dos desapilamientos y la actualización de PC. Concepto erróneo: no todos los opcodes requieren un manejador con nombre.

Fuera de alcance: los ayudantes de flags y BRK son los pasos 188-190; RTI y el opcode $40 son los pasos 191-192.

Ejecutar esta lección

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