Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 29 Nov 2025, 16:56

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


design patterns

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 2 sur 4
 [ 58 message(s) ]  Aller vers la page Précédent  1, 2, 3, 4  Suivant
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
TOUKO
 Sujet du message : Re: design patterns
Message Publié : 13 Juil 2010, 09:58 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
Vous utilisez la technique du speed code sur CPC ???


Haut
 Profil  
 
Megachur
 Sujet du message : Re: design patterns
Message Publié : 14 Juil 2010, 21:14 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
dans quel type de cas ?


Haut
 Profil  
 
TOUKO
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 07:35 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
Des boucles par exemple ..
Ou des compteurs ..

Ca donnait de très bons résultats sur C64 .


Haut
 Profil  
 
Demoniak
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 08:02 
Hors-ligne
VIP
VIP

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
Excusez ma question mais ça consiste en quoi cette technique ?

_________________
http://demoniak-contrib.forumactif.com/


Haut
 Profil  
 
TOUKO
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 08:50 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
A ne pas perdre des cycles CPU dans le un test de boucle .

Exemple .

si tu fait un compteur de 0 à 500, tu vas mettre une variable ou un registre à 0.
Puis incrémenter de un jusqu'à 500 ok, mais à chaque incrementation tu vas faire un test pour savoir si tu as atteint les 500 ..

Hors si ce test prend à chaque fois 4 cycles, tu le multiplies par le nombre de fois où tu fais ce test+le saut en debut de boucle, ici c'est à dire 500.
Donc (4*500)+(500*saut debut de boucle) = 3000/4000 cycles CPU voire plus ..
Alors imagine une boucle de 1000 ou plus ..

La technique (qui ne peut quasiment s'appliquer qu'aux demos), consiste à mettre dans le code autant d'incrémentations pour arriver, ici à 5OO.

Donc par exemple (c'est pas du code Z80)
Code :
debut:
   lda #0        ; met registre A à 0
   inc             ; incremente A
   cmp #500   ; compare A à 500 (bon c'est pour simplifier comparaison word sur reg 8 bit)
   bne debut   ; branchement à debut si pas égal à 500


est remplacé par :
Code :
   lda #0        ; met registre A à 0
   inc             ; incremente A
   inc             ; incremente A
   inc             ; incremente A
   inc             ; incremente A
   inc             ; incremente A
   ....             ; etc et cela 500 fois


Plus de cycles utilisé pour la comparaison et pour le retour à debut:
C'est beaucoup plus rapide, mais ça prend bien plus de place aussi, et le code risque de devenir
indigeste également.

Mais dans le cadre d'une demo, où les cycles sont très important, la technique vaut vraiment le coup.


Dernière édition par TOUKO le 15 Juil 2010, 13:17, édité 1 fois.

Haut
 Profil  
 
AsT
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 09:02 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 29 Août 2007, 08:04
Message(s) : 751
Localisation : Impact Hq
Tout dépends ce que tu veux faire avec...

Par exemple si tu veux faire avancer un raster ligne à ligne, ce genre de
technique ne fonctionnera pas.

Par contre, dans des cas bien particulier d'optimisation (et s'il me reste de la place en mémoire), Il peut m'arriver d'utiliser ce type de technique moi aussi :)

_________________
AsT / iMP4CT

Retrouvez nous sur le forum Amstrad Plus
"Call &bb06"


Haut
 Profil  
 
TOUKO
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 10:32 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
C'est vrai, j'avait vu une utilisation massive de cette technique pour une demo C64, ou le mec voulait faire un plasma, et franchement le gain était spectaculaire.


Haut
 Profil  
 
Fredouille
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 11:07 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 26 Nov 2008, 10:04
Message(s) : 174
Localisation : Saint Ouen l'Aumône
Mais dans ce cas précis, tu peux aller beaucoup plus vite en affectant directement la variable à 500, même si c'est impossible. :P

Bon d'accord, je sors... :mdr:


Haut
 Profil  
 
fano
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 11:16 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 15 Août 2008, 13:00
Message(s) : 968
Localisation : Troyes, France
Ah d'accord , c'est ça.Oui alors , c'est quelque chose que j'utilise surtout pour l'affichage graphique où je déroule les boucles quand j'utilise avec des sprites à taille fixe (1*1 char ou 2*2 char)

_________________
"NOP" tel est le programme parfait ! court, rapide, lisible et sans bugs (connus)


Haut
 Profil  
 
Demoniak
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 12:25 
Hors-ligne
VIP
VIP

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
Ok, moi j'appelle ça le "loop unroll" :)

_________________
http://demoniak-contrib.forumactif.com/


Haut
 Profil  
 
TOUKO
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 13:20 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
Demoniak a écrit :
Ok, moi j'appelle ça le "loop unroll" :)


raaah vous étes chiants les demos-maker, vous pouvez pas vous mettre d'accord sur les termes ??? .(

Lol, ça sent encore la rivalité C64/CPC tout ça .
Les mecs ont même fait des scripts qui insèrent ces trucs directement dans le code source, tellement c'est chiant :sweatingbullets:


Haut
 Profil  
 
fano
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 13:50 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 15 Août 2008, 13:00
Message(s) : 968
Localisation : Troyes, France
TOUKO a écrit :
Les mecs ont même fait des scripts qui insèrent ces trucs directement dans le code source, tellement c'est chiant
Sinon la plupart des assembleurs ont des macros pour faciliter la tâche.

_________________
"NOP" tel est le programme parfait ! court, rapide, lisible et sans bugs (connus)


Haut
 Profil  
 
norecess
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 15:20 
"SPEEDCODE", c'est vraiment à chier comme terme :)


Haut
  
 
TOUKO
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 15:40 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
Effectivement je préfère loop unrolling, et après quelques recherches il me semble que c'est vraiment le terme qui convient :D


Haut
 Profil  
 
Megachur
 Sujet du message : Re: design patterns
Message Publié : 15 Juil 2010, 20:14 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Bah, bien sûr qu'on l'utilise aussi sur notre z80 limité...en mhz !!!

Généralement, j'écris le code comme cela :

1) algo général (en gros ce que le prog doit faire)
2) speudo-code en français
3) conversion en z80 (à ce moment là, j'aurai pu écrire en n'importe quel language asm ou autre !!!)
4) ça marche ? passage au 5)
5) j'optimise le code... ca marche tjs ? passage au 6)
6) je regarde ce qui prend du temps dans le code -> j'optimise (retourner au 6 tant qu'on est pas satisfait)
7) ca y est, alors on peut encore optimiser en speedcode (ou loop unroll) ! Généralement, je fais ça en dernier car c'est généralement consommateur en mémoire et c'est là qu'on voit vraiment si c'est la peine (car si on tient déjà dans la vbl c'est inutile !!! ;-))

J'ai utilisé cette technique pour Maurice Aime Les Bobs par exemple
;linked: http_//www.cpc-p0wer.com/cpcdemos/index.php?page=detail&num=405

si ça t'intéresse, le code est là !!! http://code.google.com/p/amstradz80code ... e_les_bobs

Tu verras qu'il n'y quasiment plus de boucle dans le code !

Bon ça y est !!! Ce thread commence à être très intéressant !!! ;-)

:biere: :biere: :biere: :biere: :biere:


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 2 sur 4
 [ 58 message(s) ]  Aller vers la page Précédent  1, 2, 3, 4  Suivant

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 18 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.