Problema con la instrucción ld en los registros ix e iy

Problema con la instrucción ld en los registros ix e iy

de Godofredo Folgado Pastor -
Número de respuestas: 3

Buenas, estoy intentando optimizar el código que ya tengo y que funciona correctamente. El problema es que para acceder a un valor de una entidad lo hago de la siguiente forma:

Siendo TYPE una etiqueta = 0 y teniendo en el registro de la direccion de memoria de la entidad a la que quiero acceder.

ld hl, #TYPE

add hl, de

Me gustaría cambiar este tipo acceso a propiedades, utilizando los registros ix e iy de la siguiente forma: TYPE(ix). Pero no consigo guardar en ix, la direccion de memoria de la entidad, es decir, el valor del registro de. Si alguien me puede ayudar lo agradecería mucho.

En respuesta a Godofredo Folgado Pastor

Re: Problema con la instrucción ld en los registros ix e iy

de Abel Martinez Flores -
En ese caso yo haría
push de
pop ix
Con esto ya tienes el valor en ix y puedes acceder con TYPE(ix) y si con eso ya puedes acceder a todos los valores de la entidad.
Además en "de" sigues teniendo la dirección de memoria por si la necesitas en un futuro
En respuesta a Abel Martinez Flores

Re: Problema con la instrucción ld en los registros ix e iy

de Godofredo Folgado Pastor -
Muchisimas gracias, no se me habría ocurrido hacerlo de esa forma.
En respuesta a Godofredo Folgado Pastor

Re: Problema con la instrucción ld en los registros ix e iy

de Godofredo Folgado Pastor -
He visto en un video de Fran que existen las macros ld_ix_de, ld_ix_hl, ... Las macros de este tipo, por si a alguien le interesa, están en el apartado combine operations, dentro del apartado de macros de la documentación de cpctelera.