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 -> RTSObjetivo
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 -> RTSPasos 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