Menuda Optimización

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Menuda Optimización

Mensaje por susso » Dom Mar 22, 2015 9:27 am

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!

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Menuda Optimización

Mensaje por antoniovillena » Dom Mar 22, 2015 11:31 am

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
Imagen

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: Menuda Optimización

Mensaje por susso » Dom Mar 22, 2015 11:35 am

10 ciclos el JP?????

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Menuda Optimización

Mensaje por antoniovillena » Dom Mar 22, 2015 11:38 am

susso escribió:10 ciclos el JP?????
Exacto
Imagen

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: Menuda Optimización

Mensaje por susso » Dom Mar 22, 2015 11:42 am

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.

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: Menuda Optimización

Mensaje por susso » Dom Mar 22, 2015 11:45 am

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.

Avatar de Usuario
antoniovillena
Nonamed
Mensajes: 1164
Registrado: Dom Ene 09, 2011 8:55 am

Re: Menuda Optimización

Mensaje por antoniovillena » Dom Mar 22, 2015 12:01 pm

Ahora sí:

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.
Imagen

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: Menuda Optimización

Mensaje por susso » Dom Mar 22, 2015 12:04 pm

Ok! Muchas gracias por la aclaración, maestro. Si, efectivamente, no tenía registros libres.

Avatar de Usuario
Alxinho
Freddy Hardest
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona
Contactar:

Re: Menuda Optimización

Mensaje por Alxinho » Dom Mar 22, 2015 7:43 pm

Soys unos p#@s máquinas :lol:
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Menuda Optimización

Mensaje por susso » Dom Mar 22, 2015 9:30 pm

Alxinho escribió:Soys unos p#@s máquinas :lol:
Bueno, aun no he sacado nada, tu si que tienes mérito. :-)

Avatar de Usuario
Alxinho
Freddy Hardest
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona
Contactar:

Re: Menuda Optimización

Mensaje por Alxinho » Lun Mar 23, 2015 6:16 am

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?
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: Menuda Optimización

Mensaje por susso » Lun Mar 23, 2015 10:58 am

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.

Avatar de Usuario
Alxinho
Freddy Hardest
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona
Contactar:

Re: Menuda Optimización

Mensaje por Alxinho » Lun Mar 23, 2015 11:47 am

Es con lo que estoy, con los de Santiago. Gracias por los ánimos y a ver cuándo se puede ver algo! :D
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.

susso
Jack The Nipper
Mensajes: 146
Registrado: Mar May 07, 2013 9:42 am

Re: Menuda Optimización

Mensaje por susso » Lun Mar 23, 2015 12:18 pm

Cualquier duda me puedes encontrar por Twitter como @leanderpixel

Avatar de Usuario
Alxinho
Freddy Hardest
Mensajes: 896
Registrado: Mar Jun 19, 2007 11:20 am
Ubicación: Barcelona
Contactar:

Re: Menuda Optimización

Mensaje por Alxinho » Lun Mar 23, 2015 1:45 pm

Ok, muchas gracias :wink:
Retrobytes Productions --> http://retrobytesproductions.blogspot.com.es

Soy un tío feliz, más que nada ... porque me sale más a cuenta.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados