Amstrad Plus Index du Forum

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Optimisation code Z80
Aller à la page: <  1, 2
 
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
fgbrain


Hors ligne

Inscrit le: 01 Juin 2015
Messages: 16
Localisation: Greece
Masculin
Point(s): 0
Moyenne de points: 0,00

MessagePosté le: Sam 1 Oct - 12:41 (2016)    Sujet du message: Optimisation code Z80 Répondre en citant

sorry you're wrong I think... both PUSH/POP IX/IY  take 5 nops!!

http://www.cpctech.org.uk/docs/instrtim.html


Revenir en haut
Publicité






MessagePosté le: Sam 1 Oct - 12:41 (2016)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 626
Masculin
Point(s): 15
Moyenne de points: 0,01

MessagePosté le: Sam 1 Oct - 13:00 (2016)    Sujet du message: Optimisation code Z80 Répondre en citant

Sorry, but just take a look at Quasar's timing!.

Ix and Iy take one nop more in each instruction. That's like that ^^

Edit :

Sorry but there is a mistake in Kevin's table.

Pop is always 1 nop faster than Push...

Push'n Pop, that's a long story.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
roudoudou


Hors ligne

Inscrit le: 14 Juil 2016
Messages: 384
Localisation: LYON
Masculin
Point(s): 0
Moyenne de points: 0,00

MessagePosté le: Mer 14 Mar - 17:43 (2018)    Sujet du message: Optimisation code Z80 Répondre en citant

Demoniak a écrit:
Un truc que j'utilise souvent dans une boucle 16 bits, avec BC comme compteur de boucle, et HL qui doit être incrémenté à chaque pas :
au lieu de faire ceci :
Code:


    LD HL,ValeurDepart
    LD BC,Compteur
Boucle:
    INC HL
    DEC BC
    LD A,B
    OR C
    JR NZ,Boucle

Il vaut mieux faire :
Code:


    LD HL,ValeurDepart
    LD BC,Compteur
Boucle:
    CPI
    JP PE,Boucle


Le CPI faisant un CP (HL), INC HL, DEC BC, et positionne le FLAG V tant que BC != 0



Pour que ça fonctionne, il ne faut pas oublier que le registre A doit être différent de l'adresse pointée par HL, ce n'est pas toujours possible Smile
EDIT: Ah nan je dis une connerie je confonds avec CPIR, comme là on sort tout le temps c'est bon Smile


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 626
Masculin
Point(s): 15
Moyenne de points: 0,01

MessagePosté le: Mer 14 Mar - 18:43 (2018)    Sujet du message: Optimisation code Z80 Répondre en citant

Très bonne observation, vu que l'instruction cpi est une instruction qui compare le contenu de hl avec celle contenue dans l'accu. Donc, si la val de a égale la val pointée par hl, la boucle s'arrête!

Bon bin je dis une connerie aussi alors ? Mort de Rire
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Revenir en haut
Demoniak


Hors ligne

Inscrit le: 10 Sep 2015
Messages: 30
Localisation: Dunkerque
Masculin
Point(s): 0
Moyenne de points: 0,00

MessagePosté le: Mer 14 Mar - 19:09 (2018)    Sujet du message: Optimisation code Z80 Répondre en citant

Le JP PE teste le flag V, qui n'est positionné que si BC est différent de zéro, donc pas d'incidence avec la comparaison entre A et le contenu de (HL) ;-)

Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 08:40 (2018)    Sujet du message: Optimisation code Z80

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation Toutes les heures sont au format GMT + 2 Heures
Aller à la page: <  1, 2
Page 2 sur 2

 
Sauter vers:  

Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com