046. Ldy absoluto x
Añadir LDY absoluto,X ($BC).
Lección 46 de 356 · tests/chapter_01_cpu/test_046_LDY_absolute_x.py
Archivo a actualizar
emulator/cpu/opcodes.pyUbicaciones
opcodes imports of absolute_x and ldy
opcodes.ldy_absolute_x
opcodes.OPCODE_TABLE[$BC]Por qué existe este paso
Esta lección completa la familia de opcodes de LDY reutilizando la resolución de dirección absoluto,X, luego leyendo la dirección efectiva y aplicando el comportamiento existente de ldy.
Ejemplo completo de implementación
# emulator/cpu/opcodes.py
from emulator.cpu.addressing_modes import absolute_x
from emulator.cpu.instructions import ldy
def ldy_absolute_x(cpu: CPU):
addr = absolute_x(cpu)
value = cpu.bus.read(addr)
ldy(cpu, value)
OPCODE_TABLE = {
# Preserve existing entries.
0xBC: ldy_absolute_x,
}Invariantes importantes
- $BC se mapea a ldy_absolute_x y consume dos bytes de operando
- X, no Y, se suma a la dirección base decodificada de 16 bits
- la dirección efectiva se lee antes de pasar su valor a ldy
ldyactualiza Zero y Negative a partir del byte cargado
Error frecuente
LDY absoluto,X no indexa con el registro de destino Y; la codificación utiliza explícitamente X.
Fuera de alcance
- handlers de opcode de STY
- penalizaciones de ciclo por cruce de página
- cambios en absolute_x
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_046_LDY_absolute_x.py -v