DCMOTO - comptage du nombre de cycles

Couvre tous les domaines de l'émulation ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 15449
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: DCMOTO - comptage du nombre de cycles

Message par Daniel »

licence.png
licence.png (8.79 Kio) Consulté 4060 fois

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.
Avatar de l’utilisateur
Sebiohazard
Messages : 357
Inscription : 30 avr. 2019 15:07

Re: DCMOTO - comptage du nombre de cycles

Message par Sebiohazard »

OK super merci pour ta réponse :) DCMOTO est écrit en C++ ?

Salutations !
Image
Daniel
Messages : 15449
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: DCMOTO - comptage du nombre de cycles

Message par Daniel »

En dehors de dcmo5online (en javascript) tous mes autres émulateurs, y compris dcmoto, sont écrits en C.
Daniel
L'obstacle augmente mon ardeur.
Bentoc
Messages : 103
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

Re: DCMOTO - comptage du nombre de cycles

Message par Bentoc »

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
2021-03-04 22_13_08-DCMOTO mise au point (1).png
2021-03-04 22_13_08-DCMOTO mise au point (1).png (22.91 Kio) Consulté 3681 fois
2021-03-04 22_13_32-DCMOTO mise au point (2).png
2021-03-04 22_13_32-DCMOTO mise au point (2).png (23.11 Kio) Consulté 3681 fois
une idée ?
__sam__
Messages : 6798
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: DCMOTO - comptage du nombre de cycles

Message par __sam__ »

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
Bentoc
Messages : 103
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

Re: DCMOTO - comptage du nombre de cycles

Message par Bentoc »

Je suis reparti d'un cas de test plus simple pour essayer de cerner le problème:

cas 1

Code : Tout sélectionner

test        
        mul
        bvc test
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
test1-01.png
test1-01.png (24.22 Kio) Consulté 3653 fois

cas 2

Code : Tout sélectionner

test        
        cmpx  pcm_end_addr,y
        bvc test
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)
test2-01.png
test2-01.png (24.09 Kio) Consulté 3653 fois
Daniel
Messages : 15449
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: DCMOTO - comptage du nombre de cycles

Message par Daniel »

Je vais vérifier dès que possible et si je trouve une explication je répondrai ici...
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 15449
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: DCMOTO - comptage du nombre de cycles

Message par Daniel »

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 8)

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.
Bentoc
Messages : 103
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

Re: DCMOTO - comptage du nombre de cycles

Message par Bentoc »

Super efficace Daniel, comme toujours ! merci !!!

l'outil de mise au point porte bien son nom :lol:
Daniel
Messages : 15449
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: DCMOTO - comptage du nombre de cycles

Message par Daniel »

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 :

comptage.png
comptage.png (18.25 Kio) Consulté 3609 fois
Daniel
L'obstacle augmente mon ardeur.
Répondre