Menuda Optimización
Moderador: Sir Cilve Sinclair
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Menuda Optimización
Un aporte para ahorrar ciclos:
No usar esto, siempre que no vayas a sumarle mas de un byte.
LD BC,x
ADD HL,BC
es lo más fácil, si la velocidad es crítica aunque ocupe mas memoria es mejor usar la siguiente rutina:
LD A,x
ADD A,L
JP NC,$+4
INC H
LD L,A
¡te ahorras unos 4-5 ciclos!
No usar esto, siempre que no vayas a sumarle mas de un byte.
LD BC,x
ADD HL,BC
es lo más fácil, si la velocidad es crítica aunque ocupe mas memoria es mejor usar la siguiente rutina:
LD A,x
ADD A,L
JP NC,$+4
INC H
LD L,A
¡te ahorras unos 4-5 ciclos!
- antoniovillena
- Nonamed
- Mensajes: 1164
- Registrado: Dom Ene 09, 2011 8:55 am
Re: Menuda Optimización
Algo se me escapa:
Código: Seleccionar todo
LD BC,x ; 10 ciclos
ADD HL,BC ; 11 ciclos
; Total: 21 ciclos
LD A,x ; 7 ciclos
ADD A,L ; 4 ciclos
JP NC,$+4 ; 10 ciclos
INC H ; 4 ciclos
LD L,A ; 4 ciclos
; Total rama 1: 25 ciclos
; Total rama 2: 29 ciclos
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: Menuda Optimización
10 ciclos el JP?????
- antoniovillena
- Nonamed
- Mensajes: 1164
- Registrado: Dom Ene 09, 2011 8:55 am
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: Menuda Optimización
Mmmmm... Espera espera, necesito que me corrijáis, haciendo eso me sale menos consumo de ciclos entre dos breakpoints en speculator, pero...
En realidad me ahorro un LD b,0 en la primera rutina, no hay un LD BC,x y en la segunda A ya viene con un valor establecido.
En realidad me ahorro un LD b,0 en la primera rutina, no hay un LD BC,x y en la segunda A ya viene con un valor establecido.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: Menuda Optimización
Queda así...
PRIMERA:
LD C,A
LD B,0
ADD HL,BC
SEGUNDA:
ADD A,L
JP NZ,$+4
INC H
LD L,A
¿Ahora si?
Por cierto donde están los ciclos oficiales en un spectrum, en mi libro es básico para Z80, no especificó para spectrum.
PRIMERA:
LD C,A
LD B,0
ADD HL,BC
SEGUNDA:
ADD A,L
JP NZ,$+4
INC H
LD L,A
¿Ahora si?
Por cierto donde están los ciclos oficiales en un spectrum, en mi libro es básico para Z80, no especificó para spectrum.
- antoniovillena
- Nonamed
- Mensajes: 1164
- Registrado: Dom Ene 09, 2011 8:55 am
Re: Menuda Optimización
Ahora sí:
Pero estás favoreciendo un caso con las condiciones iniciales. En la mayoría de los casos ADD HL,BC es más rápido. La segunda opción se emplea normalmente cuando no tienes registros libres, ya que en ese caso emplear la pila u otro mecanismo para liberarlos sí que sería más lento. Si por ejemplo hubiese que sumar un array de bytes, la primera opción sería rapidísima, ya que el LD B,0 formaría parte de la inicialización, no del bucle.
En el datasheet del Z80 están los ciclos de cada instrucción. También hay documentos de texto con listados de instrucciones y ciclos en www.z80.info.
Código: Seleccionar todo
LD C,A ;4
LD B,0 ;7
ADD HL,BC ;11
;Total: 22
ADD A,L ;4
JP NC,$+4 ;10
INC H ;4
LD L,A ;4
;Total: 18/22
Pero estás favoreciendo un caso con las condiciones iniciales. En la mayoría de los casos ADD HL,BC es más rápido. La segunda opción se emplea normalmente cuando no tienes registros libres, ya que en ese caso emplear la pila u otro mecanismo para liberarlos sí que sería más lento. Si por ejemplo hubiese que sumar un array de bytes, la primera opción sería rapidísima, ya que el LD B,0 formaría parte de la inicialización, no del bucle.
En el datasheet del Z80 están los ciclos de cada instrucción. También hay documentos de texto con listados de instrucciones y ciclos en www.z80.info.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: Menuda Optimización
Ok! Muchas gracias por la aclaración, maestro. Si, efectivamente, no tenía registros libres.
- Alxinho
- Freddy Hardest
- Mensajes: 896
- Registrado: Mar Jun 19, 2007 11:20 am
- Ubicación: Barcelona
- Contactar:
Re: Menuda Optimización
Soys unos p#@s máquinas
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Menuda Optimización
Bueno, aun no he sacado nada, tu si que tienes mérito.Alxinho escribió:Soys unos p#@s máquinas
- Alxinho
- Freddy Hardest
- Mensajes: 896
- Registrado: Mar Jun 19, 2007 11:20 am
- Ubicación: Barcelona
- Contactar:
Re: Menuda Optimización
Yo me tengo que poner en serio de verdad YA con el código máquina.
¿Pero estás con algún proyecto en marcha?¿Se puede ver algo?
¿Pero estás con algún proyecto en marcha?¿Se puede ver algo?
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: Menuda Optimización
Te animo a que lo hagas, aunque tenía ya conocimientos del asm 68000 del Amiga se me olvidó por completo, no trates de ponerte metas, hazlo poco a poco, no es difícil ni fácil, pero si es muy satisfactorio.
Con el z80 empecé con los tutos de Santiago Romero, alojados aquí en Speccy.org, si te atascas vuelve atrás. Sigue cada párrafo al detalle, no te saltes nada.
Y si, estoy haciendo algo, pero todavía es pronto para enseñar nada y no me corresponde a mi mostrarlo.
Un abrazo y ánimos.
Con el z80 empecé con los tutos de Santiago Romero, alojados aquí en Speccy.org, si te atascas vuelve atrás. Sigue cada párrafo al detalle, no te saltes nada.
Y si, estoy haciendo algo, pero todavía es pronto para enseñar nada y no me corresponde a mi mostrarlo.
Un abrazo y ánimos.
- Alxinho
- Freddy Hardest
- Mensajes: 896
- Registrado: Mar Jun 19, 2007 11:20 am
- Ubicación: Barcelona
- Contactar:
Re: Menuda Optimización
Es con lo que estoy, con los de Santiago. Gracias por los ánimos y a ver cuándo se puede ver algo!
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
-
- Jack The Nipper
- Mensajes: 146
- Registrado: Mar May 07, 2013 9:42 am
Re: Menuda Optimización
Cualquier duda me puedes encontrar por Twitter como @leanderpixel
- Alxinho
- Freddy Hardest
- Mensajes: 896
- Registrado: Mar Jun 19, 2007 11:20 am
- Ubicación: Barcelona
- Contactar:
Re: Menuda Optimización
Ok, muchas gracias
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
Soy un tío feliz, más que nada ... porque me sale más a cuenta.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 20 invitados