| CPC Rulez https://cpcrulez.fr/forum/ |
|
| design patterns https://cpcrulez.fr/forum/viewtopic.php?f=4&t=4252 |
Page 1 sur 4 |
| Auteur : | neocps1 [ 01 Juil 2010, 12:26 ] |
| Sujet du message : | design patterns |
désolé si je monopolise un peu le forum en ce moment 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... |
|
| Auteur : | hERMOL [ 01 Juil 2010, 12:35 ] |
| Sujet du message : | Re: design patterns |
neocps1 a écrit : désolé si je monopolise un peu le forum en ce moment t'as bien raison, bouge les ces CPCistes endormi ... 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 |
|
| Auteur : | neocps1 [ 01 Juil 2010, 13:13 ] |
| Sujet du message : | Re: design patterns |
Merci |
|
| Auteur : | Demoniak [ 01 Juil 2010, 17:25 ] |
| Sujet du message : | Re: design patterns |
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 |
|
| Auteur : | norecess [ 01 Juil 2010, 17:39 ] |
| Sujet du message : | Re: design patterns |
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 |
|
| Auteur : | neocps1 [ 02 Juil 2010, 08:50 ] |
| Sujet du message : | Re: design patterns |
[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 ! |
|
| Auteur : | hERMOL [ 02 Juil 2010, 09:28 ] |
| Sujet du message : | Re: design patterns |
ah oui ca c'est de l'optimisation ! 4 opcodes contre 16! @DEMONIAK: si t'en a d'autres ..
|
|
| Auteur : | fano [ 02 Juil 2010, 11:13 ] |
| Sujet du message : | Re: design patterns |
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 Personnellement, je n'en ai pas beaucoup à vous offrir peut être à part certaines organisation de données. |
|
| Auteur : | Demoniak [ 02 Juil 2010, 21:15 ] |
| Sujet du message : | Re: design patterns |
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 |
|
| Auteur : | Fredouille [ 03 Juil 2010, 07:51 ] |
| Sujet du message : | Re: design patterns |
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 |
|
| Auteur : | Demoniak [ 03 Juil 2010, 08:15 ] |
| Sujet du message : | Re: design patterns |
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 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 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 |
|
| Auteur : | Kris [ 03 Juil 2010, 11:13 ] |
| Sujet du message : | Re: design patterns |
Excellent ce thread, j'encourage les pros du Z80 à l'alimenter en detaillant leur raisonnement, c'est trés instructif. Merci à vous |
|
| Auteur : | norecess [ 03 Juil 2010, 12:17 ] |
| Sujet du message : | Re: design patterns |
Très bon tip, Demoniak ! Excellent même |
|
| Auteur : | Megachur [ 03 Juil 2010, 18:12 ] |
| Sujet du message : | Re: design patterns |
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 !!!!
|
|
| Auteur : | Demoniak [ 04 Juil 2010, 08:09 ] |
| Sujet du message : | Re: design patterns |
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 !!!! ![]() Oui bonne idée. On ouvre un nouveau sujet ? |
|
| Page 1 sur 4 | Le fuseau horaire est UTC+1 heure |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|