DCMOTO - comptage du nombre de cycles
Modérateurs : Papy.G, fneck, Carl
Re: DCMOTO - comptage du nombre de cycles
Comme indiqué dans la licence de dcmoto, les développeurs peuvent utiliser les sources de mes émulateurs sous licence GPL pour ajouter de nouvelles fonctionnalités. C'est une pratique courante, ces émulateurs ont été portés sur de nombreux systèmes, y compris Raspberry Pi et plusieurs consoles de jeu. Tous les émulateurs Thomson sous RetroArch dérivent des sources que j'ai publiées.
https://www.retroarch.com/
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
- Sebiohazard
- Messages : 425
- Inscription : 30 avr. 2019 15:07
Re: DCMOTO - comptage du nombre de cycles
OK super merci pour ta réponse DCMOTO est écrit en C++ ?
Salutations !
Salutations !
Re: DCMOTO - comptage du nombre de cycles
En dehors de dcmo5online (en javascript) tous mes autres émulateurs, y compris dcmoto, sont écrits en C.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: DCMOTO - comptage du nombre de cycles
Encore merci pour cette nouvelle fonctionnalité de comptage de cycle : je m'en sers tout le temps.
c'est extra vraiment pour profiler son code.
Un petit bug cependant :
le cmpx #03,y est annoncé 7 et est compté 5
une idée ?
c'est extra vraiment pour profiler son code.
Un petit bug cependant :
le cmpx #03,y est annoncé 7 et est compté 5
une idée ?
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: DCMOTO - comptage du nombre de cycles
Il me semble que cela ne compte que les cycles entre deux points d'arrêts, pas entre 2 pas d'executions. Me trompes-je ? Me gourre-je ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: DCMOTO - comptage du nombre de cycles
Je suis reparti d'un cas de test plus simple pour essayer de cerner le problème:
cas 1
Ce cas fonctionne correctement :
- Avec un point d'arrêt sur mul, lorsqu'on appuie sur "Jusqu'au point d'arrêt" la boucle se joue, on a Cycles: 14 (11+3)
- En appuyant sur "Pas à pas" on a successivement 11 et 3
=> c'est OK
cas 2
Ce cas semble poser problème :
- Avec un point d'arrêt sur "cmpx $03,y" , lorsqu'on appuie sur "Jusqu'au point d'arrêt" la boucle se joue, on a Cycles: 8 (au lieu de 7+3=10)
- En appuyant sur "Pas à pas" on a successivement 5 et 3 (au lieu de 7 et 3)
=> c'est KO (pourtant on a bien 7 cycles en face de l'instruction dans la fenêtre de désassemblage)
cas 1
Code : Tout sélectionner
test
mul
bvc test
- Avec un point d'arrêt sur mul, lorsqu'on appuie sur "Jusqu'au point d'arrêt" la boucle se joue, on a Cycles: 14 (11+3)
- En appuyant sur "Pas à pas" on a successivement 11 et 3
=> c'est OK
cas 2
Code : Tout sélectionner
test
cmpx pcm_end_addr,y
bvc test
- Avec un point d'arrêt sur "cmpx $03,y" , lorsqu'on appuie sur "Jusqu'au point d'arrêt" la boucle se joue, on a Cycles: 8 (au lieu de 7+3=10)
- En appuyant sur "Pas à pas" on a successivement 5 et 3 (au lieu de 7 et 3)
=> c'est KO (pourtant on a bien 7 cycles en face de l'instruction dans la fenêtre de désassemblage)
Re: DCMOTO - comptage du nombre de cycles
Je vais vérifier dès que possible et si je trouve une explication je répondrai ici...
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: DCMOTO - comptage du nombre de cycles
La cause est identifiée : C'est une erreur dans les tables d'instructions de dcmoto pour l'émulation du 6809.
Le désassembleur utilise des tables indépendantes, il donne la bonne valeur.
Pour l'instruction $AC le nombre de cycles officiel est 6+. La table de dcmoto contenait 4+, ce qui explique les deux cycles de différence.
Je ne sais pas encore si c'est une faute de frappe, ou si la documentation que j'ai utilisée à l'époque (il y a plus de 20 ans) avait une erreur.
En parcourant rapidement la table, j'ai noté une autre erreur. Je vais être obligé de passer en revue toutes les instructions une par une pour être sûr qu'il ne traîne pas d'autres erreurs similaires. Il est surprenant que le bug n'ait pas été détecté plus tôt, car il doit désynchroniser certaines démos qui comptent les cycles. Je me demande si ce n'est pas la cause d'une différence de comptage du timer entre dcmoto et TEO, que l'on avait mise en évidence il y a quelques années. Un grand merci à Bentoc pour avoir découvert l'erreur
Dès que la table sera validée je publierai une nouvelle version de dcmoto, probablement ce soir ou demain matin.
Le désassembleur utilise des tables indépendantes, il donne la bonne valeur.
Pour l'instruction $AC le nombre de cycles officiel est 6+. La table de dcmoto contenait 4+, ce qui explique les deux cycles de différence.
Je ne sais pas encore si c'est une faute de frappe, ou si la documentation que j'ai utilisée à l'époque (il y a plus de 20 ans) avait une erreur.
En parcourant rapidement la table, j'ai noté une autre erreur. Je vais être obligé de passer en revue toutes les instructions une par une pour être sûr qu'il ne traîne pas d'autres erreurs similaires. Il est surprenant que le bug n'ait pas été détecté plus tôt, car il doit désynchroniser certaines démos qui comptent les cycles. Je me demande si ce n'est pas la cause d'une différence de comptage du timer entre dcmoto et TEO, que l'on avait mise en évidence il y a quelques années. Un grand merci à Bentoc pour avoir découvert l'erreur
Dès que la table sera validée je publierai une nouvelle version de dcmoto, probablement ce soir ou demain matin.
Dernière modification par Daniel le 05 mars 2021 13:48, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: DCMOTO - comptage du nombre de cycles
Super efficace Daniel, comme toujours ! merci !!!
l'outil de mise au point porte bien son nom
l'outil de mise au point porte bien son nom
Re: DCMOTO - comptage du nombre de cycles
Finalement il n'y avait pas d'autre erreur. Heureusement !
La nouvelle version dcmoto 2021.03.05 : http://dcmoto.free.fr/emulateur/dcmoto_20210305.zip
Le nouveau comptage du nombre de cycles :
La nouvelle version dcmoto 2021.03.05 : http://dcmoto.free.fr/emulateur/dcmoto_20210305.zip
Le nouveau comptage du nombre de cycles :
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.