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:57

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 1 sur 4
 [ 58 message(s) ]  Aller vers la page 1, 2, 3, 4  Suivant
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
neocps1
 Sujet du message : design patterns
Message Publié : 01 Juil 2010, 12:26 
Hors-ligne
Rulezz
Rulezz

Inscription : 28 Mai 2010, 11:34
Message(s) : 100
Localisation : Eteauville, France
désolé si je monopolise un peu le forum en ce moment :oops:

ca pourrait être bien d'avoir une partie "design patterns" où on pourrait retrouver des idées d'implémentation optimales pour des opérations classiques.

Exemple avec les décalages sur 16 bit:

- Décalage à droite d'un bit sur bc:

sra b
rr c

- Décalage à gauche d'un bit sur bc:
sla c
rl b


Ca reste une idée, mais je pense que ca pourrait aider pas mal les développeurs z80 débutants...


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: design patterns
Message Publié : 01 Juil 2010, 12:35 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
neocps1 a écrit :
désolé si je monopolise un peu le forum en ce moment :oops:

t'as bien raison, bouge les ces CPCistes endormi ... :cow:

vi bonne idée, tu peu en trouver quelques un sur ces liens:
https://cpcrulez.fr/coding_src02.htm
https://cpcrulez.fr/coding_menu-src.htm

un pour l'heure de l'apéro ...

Code :
;hl=a*128
ld l,a               ;
ld h,0
rl l
rl h
rl l
rl h
rl l
rl h
rl l
rl h
rl l
rl h
rl l
rl h
rl l
rl h


Haut
 Profil  
 
neocps1
 Sujet du message : Re: design patterns
Message Publié : 01 Juil 2010, 13:13 
Hors-ligne
Rulezz
Rulezz

Inscription : 28 Mai 2010, 11:34
Message(s) : 100
Localisation : Eteauville, France
Merci :) Aucun interet dans mon code les sra et sla, des rr et rl sont identiques et prennent autant de temps, sans compter que ca homogénéise le code


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

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
hERMOL a écrit :
un pour l'heure de l'apéro ...

Code :
;hl=a*128
ld l,a               ;
ld h,0
rl l
rl h
rl l
rl h
rl l
rl h
rl l
rl h
rl l
rl h
rl l
rl h
rl l
rl h


Heu y a plus simple pour faire hl=a*128 :
Code :
ld h,a
ld l,0
sra h
rr l

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


Haut
 Profil  
 
norecess
 Sujet du message : Re: design patterns
Message Publié : 01 Juil 2010, 17:39 
Enfin un thread interressant !

Je viens de découvrir ta page web Hermol, j'adore. Y'a deja des choses dedans que je m'aurais bien vu ré-utiliser dans la Pheelone :)


Haut
  
 
neocps1
 Sujet du message : Re: design patterns
Message Publié : 02 Juil 2010, 08:50 
Hors-ligne
Rulezz
Rulezz

Inscription : 28 Mai 2010, 11:34
Message(s) : 100
Localisation : Eteauville, France
[quote="Demoniak"]
Heu y a plus simple pour faire hl=a*128 :
Code :
ld h,a
ld l,0
sra h
rr l


bien vu !


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: design patterns
Message Publié : 02 Juil 2010, 09:28 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
ah oui ca c'est de l'optimisation ! 4 opcodes contre 16!

@DEMONIAK: si t'en a d'autres .. :kissed:


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

Inscription : 15 Août 2008, 13:00
Message(s) : 968
Localisation : Troyes, France
Ah oui elle pique la multiplication par 128 !

Après , pour en revenir au design patterns , je n'irai pas jusque là puisque sur CPC on brode du sur mesure mais par contre partager les tricks , c'est cool :D
Personnellement, je n'en ai pas beaucoup à vous offrir peut être à part certaines organisation de données.

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


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

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
Un petit truc pour la route :
Code :
INC HL
DEC BC
LD A,B
OR C
JR NZ,xxxx

peut être remplacé par:
Code :
CPI
JP PE,xxxx

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


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

Inscription : 26 Nov 2008, 10:04
Message(s) : 174
Localisation : Saint Ouen l'Aumône
Messieurs les codeurs expérimentés, pouvez-vous s'il vous plait, allumer la lumière de pauvres néophytes comme moi en indiquant ce qu'est censé faire votre bout de code et surtout pourquoi ?

Merci à vous :twisted:


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

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
Je vais répondre pour mon petit exemple plus haut :)

Dans cet exemple, j'utilise BC comme compteur 16 bits pour une boucle, et HL comme pointeur sur une zone mémoire par exemple.
A la fin de ma boucle, j'incrémente le pointeur mémoire (HL), je décrémente mon compteur (BC) et si celui-ci n'est pas nul, je poursuis ma boucle (le label représenté par xxxx)
En gros, un code standard (non optimisé) fait comme la première version:
Code :
INC HL ; incrémente le pointeur mémoire
DEC BC ; décrémente le compteur
LD A,B ; test bits de poids fort compteur
OR C ; test bits de poids faible compteur
JR NZ,xxxx ; si BC différent de zéro, on continue

qui peut se traduire par la version optimisée :
Code :
CPI ; compare a avec (HL), incrémente HL, décrémente BC, positionne les flags
JP PE,xxxx

dans le deuxième code, j'utilise les spécificités de l'instruction z80 CPI, qui permet de faire une comparaison entre A et le contenu mémoire pointé par HL. Cette comparaison ne m'est d'aucune utilité, par contre, le fait que CPI incrémente HL, décrémente BC, et positionne le flag P (parité) si BC vaut zéro est très intéressant dans mon cas :D
Voilà, j'espère que ceci permet d'éclairer un peu sur la façon dont j'ai optimisé ma boucle.

Ah oui je profite que je suis en forme ce matin :D
Pour le premier exemple (HL=A*128), il suffit de faire HL=(A*256)/2, donc HL=A*256 se traduit par
Code :
LD H,A
LD L,0

et ensuite la division par 2 de HL :
Code :
SRA H ; rotation vers la droite avec retenue et signe de H
RR L ; rotation vers la droite avec récupération de la reteneue de L

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


Haut
 Profil  
 
Kris
 Sujet du message : Re: design patterns
Message Publié : 03 Juil 2010, 11:13 
Hors-ligne
Rulezzzz
Rulezzzz

Inscription : 28 Août 2007, 19:22
Message(s) : 634
Localisation : 35-33-66
Excellent ce thread, j'encourage les pros du Z80 à l'alimenter en detaillant leur raisonnement, c'est trés instructif.
:o
Merci à vous


Haut
 Profil  
 
norecess
 Sujet du message : Re: design patterns
Message Publié : 03 Juil 2010, 12:17 
Très bon tip, Demoniak ! Excellent même :)


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

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
En fait, le mieux est de proposer un code et que l'on voit ensemble pour l'optimiser...car donner des trucs pour des trucs... alors que s'il y a vraiment un besoin de gagner du temps machine pour une boucle ou une routine ça motive !!!! ;-) :winner: :biere: :winner:


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

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
Megachur a écrit :
En fait, le mieux est de proposer un code et que l'on voit ensemble pour l'optimiser...car donner des trucs pour des trucs... alors que s'il y a vraiment un besoin de gagner du temps machine pour une boucle ou une routine ça motive !!!! ;-) :winner: :biere: :winner:

Oui bonne idée. On ouvre un nouveau sujet ?

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


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 4
 [ 58 message(s) ]  Aller vers la page 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 14 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.