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 30 Nov 2025, 16:31

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


test fin de table

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 2 sur 2
 [ 28 message(s) ]  Aller vers la page Précédent  1, 2
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
shap
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 12:55 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
TOUKO a écrit :
faut voir si un test de bit sur le z80 est plus rapide qu'une valeur .


Haut
 Profil  
 
shap
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 12:58 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
oups, j'ai validé trop vite...

pour le test bit ou valeur, ça se vaut.

pour un bit 15 (donc bit 7 du poids fort) tu décales tes bits à gauche, et tu fais un test conditionnel sur la carry.

un cp valeur te prend 2 nops, tu peux faire cp registre si t'as préchargé ton flag (mais tu perds un registre 8 bits).

je dirais que le test du bit est plus pratique mais il nécessite de réserver un bit justement ....


Haut
 Profil  
 
TOUKO
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:00 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
Y'a pas d'instructions pour le test de bits ???

Bitn ça permet ca non ??


Dernière édition par TOUKO le 03 Juin 2011, 13:02, édité 2 fois.

Haut
 Profil  
 
shap
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:01 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
TOUKO a écrit :
Y'a pas d'instructions de test de bits ???


Si mais ça prend plus de temps que de décaler.

sinon, oui peux faire bit 7,registre et un test conditionnel sur le flag z.

bit x,registre => 2µs


Haut
 Profil  
 
TOUKO
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:04 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
Ah c'est ce qu'il me semblait, ca prend 2 cycles (vu que l'octet de poid fort sera déjà dans un reg), on peut pas faire plus simple ..


Haut
 Profil  
 
shap
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:08 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
si, on peut faire (avec valeur à tester dans A)

RLA
JR C,xxxx

RLA => 1µs


Haut
 Profil  
 
TOUKO
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:13 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
oui RLA, mais après ton RLA, faut bien que tu fasses quelque chose, tester un flag par exemple :wink:
Edit: merde, en fait t'as raison, car c'est pareil avec le test de bit :downnn:

Faut que j'arrête de penser 6502 moi lol ..


Dernière édition par TOUKO le 03 Juin 2011, 13:15, édité 1 fois.

Haut
 Profil  
 
Megachur
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:15 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
en fait, je prends une valeur dans cette liste par frame

ce mot de 16bits est décomposé comme cela :

sur 8 bits un compteur de &01 à &ff
sur 8 bits un octet qui va être répéter autant de fois qu'indiqué par le compteur (de &00 à &ff)

quand le compteur sera à 0 je prends une nouvelle valeur dans la liste.

donc c'est vrai que je pourrai utiliser un test sur la valeur &00 du compteur pour indiquer la fin de liste mais je pensais l'utiliser pour indiquer un compteur 'infini'...

perdre effectivement un bit pour un test...cela aurait pu être une solution, mais au final cela ne fait gagner qu'un nop pour une perte important (128) au niveau du compteur.

mettre un ld bc,table_adr_end avant, c'est pas une solution car ça prends 3 nop pour 2 de gagnés au niveau des cps (vu que je fais cela qu'une fois par frame max) et encore pour le deuxième cp ça n'arrive qu'une fois toutes les 256/2 possibilités de la table (mot de 16 bits)

merci en tout cas à tous de votre aide !


Haut
 Profil  
 
shap
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:16 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
ben oui

RLA
JR C,xxxx


je fait bien un test sur la carry car RLA renvoi ton bit 7 dans la carry...

si tu fais la même chose avec bit x,r ça fait 2µs plus le saut conditionnel que tu es obligé de faire dans tous les cas (ou le ret, ou le call ou ce que tu veux de conditionnel bien entendu).


Haut
 Profil  
 
TOUKO
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:17 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 12 Juil 2010, 13:36
Message(s) : 169
donc ton compteur, n'est jamais à 0 au départ ..
Donc la valeur 0 valeur pourrai signifier la fin de ta table.
avec le RLA de sharp, ca peut faire pas mal.
Voire au pire 0 dans chaque byte.

Ouai sharp, j'avais vu mon erreur .. :sweatingbullets:


Haut
 Profil  
 
shap
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:21 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
Megachur a écrit :
donc c'est vrai que je pourrai utiliser un test sur la valeur &00 du compteur pour indiquer la fin de liste mais je pensais l'utiliser pour indiquer un compteur 'infini'...

perdre effectivement un bit pour un test...cela aurait pu être une solution, mais au final cela ne fait gagner qu'un nop pour une perte important (128) au niveau du compteur.

mettre un ld bc,table_adr_end avant, c'est pas une solution car ça prends 3 nop pour 2 de gagnés au niveau des cps (vu que je fais cela qu'une fois par frame max) et encore pour le deuxième cp ça n'arrive qu'une fois toutes les 256/2 possibilités de la table (mot de 16 bits)

merci en tout cas à tous de votre aide !


C'est une sorte de codage RLE ton truc donc tu peux réserver une valeur (genre #ff mais que tu ne test que sur l'octet qui défini le nombre de répétitions) donc ton nombre de répétition, passe de 0-255 à 0-254 ce qui n'est pas une perte énorme, et tu n'as plus qu'à tester un octet, ça me parait un compromis acceptable plutôt que gérer un compteur 16bits.


Haut
 Profil  
 
shap
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 13:25 
Hors-ligne
VIP
VIP

Inscription : 26 Avr 2011, 15:27
Message(s) : 277
En plus j'avais pas fait gaffe, mais si c'est un codage RLE ton truc, tu n'utilise pas 0 comme code de répétition je suppose...

Donc tu test octet répétition à 0 = fin de la table, un simple OR ou AND fera l'affaire, non ?


Haut
 Profil  
 
Megachur
 Sujet du message : Re: test fin de table
Message Publié : 03 Juin 2011, 17:47 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
shap a écrit :
En plus j'avais pas fait gaffe, mais si c'est un codage RLE ton truc, tu n'utilise pas 0 comme code de répétition je suppose...

Donc tu test octet répétition à 0 = fin de la table, un simple OR ou AND fera l'affaire, non ?


oui c'est tout à fait une solution possible...
mais comme j'indiquai dans mon post précédent, je me demandais si je n'allais pas utilisé l'octet répétition à 00 pour dire que c'est une répétition infinie !

Merci à tous :biere: :kiss: :kiss: :kiss: :kiss: d'avoir phosphorés avec moi sur cette optim !
surtout que j'ai plein d'autres pgms en cours qui utilisent les tests fins de tables... donc ces réflexions peuvent servir à plein d'autres !


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

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