Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation Assembleur 68K » Line 1111 Emulator (13 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
geogeo Ecrit le: Vendredi 12 novembre 2004 à 00:19 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


J'ai cette erreur en ayant fait un programme en ASM et je ne comprend pas trop!
J'ai cru lire quelque part que cette erreur était déclenchée par le processeur lorsque l'on tente d'executer une instruction qui n'existe pas.

L'appel à une ROM_CALL avec un argument incorrect peut provoquer cette erreur et de préférence avec quelles ROM_CALLs.

Le problème c'est que je n'arrive pas à déboguer mon programme car le bug se produit après avoir effectué énormément de cycles et chaque ligne du programme en GFA Basic est importante, si on retire une ligne, n'importe laquelle, le bug n'apparait plus. :(
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°1   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 12 novembre 2004 à 01:34 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Passe-moi les fichiers pour que je les débogue, je pense que c'est la solution la plus simple.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°2   Marquer comme non lu.
geogeo Ecrit le: Vendredi 12 novembre 2004 à 01:47 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Voilà http://tisofts.free.fr/GFABasic/GFA_TEM.zip

Sinon, c'est vraiment néfaste d'utiliser des adressages avec PC genre move.l variable(%PC),%a0 ?

Pour utiliser le programme il faut faire: gfatem("tokenbuf"), tokenbuf se trouve dans le zip.
-Edité le Vendredi 12 novembre 2004 à 01:48 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°3   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 12 novembre 2004 à 02:03 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  



Récupéré.

Sinon, c'est vraiment néfaste d'utiliser des adressages avec PC genre move.l variable(%PC),%a0 ?

Ça dépend. Ce n'est pas néfaste en soi (au contraire, c'est une optimisation), mais si tu fais de la compilation séparée, ou si ton programme fait plus de 32 KO, il vaut mieux laisser faire ce choix au linker avec les switches d'optimisation, il fait ça si et seulement si c'est possible.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°4   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 12 novembre 2004 à 03:28 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Saut à une adresse incorrecte dans:
     lea.l     Tbl_Tokens(%PC),%a0        |Charge la table dans a0
     move.l    (%a0,%d0.l),%a0
     jbsr      (%a0)           |Execute routine

%d0 == 0x3c0
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°5   Marquer comme non lu.
geogeo Ecrit le: Vendredi 12 novembre 2004 à 12:19 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Ouai ça je sais, que j'ai un token pourri qui est executé soit le token 0xF0 qui n'eixts epas dans ma table donc je saute à l'adresse 0x3CC000 ou se trouve l'instruction qui n'existe pas dc.w #$FFFF.

Maintenant un truc encore plus bizarre, il suffit par exemple je j'écrit: movea.l TokensFile_DataPtr,%a1 avant le jbsr où qu'importe et l'erreur change, j'ai un illegal instruction et l'adresse du saut change. J'ai vérifié les sauts effectués dans mon programme et il n'y a aucune erreur, ils sont parfaits.
Ensuite je ne peux pas vraiment trouver l'adresse précise du token qui merde car suffit que j'ajoute une instruction qui n'a pourtant aucun effet sur l'exécution du programme mais qui fait changer l'erreur. :(

Et le pire dans tout ça c'est que le code est exécuté correctement suivant n cycles et que au bout d'un moment ça plante. Donc impossible de déboguer à la main car se taper plus de 300 cycles de 100 tokens c'est très long. :(
-Edité le Vendredi 12 novembre 2004 à 12:21 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°6   Marquer comme non lu.
Folco Ecrit le: Vendredi 12 novembre 2004 à 14:19 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


Kevin Kofler :
ou si ton programme fait plus de 32 KO

Ca ne marchera jamais avec un prog de plus de 32 ko?
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°7   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 12 novembre 2004 à 15:50 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Mettre %PC partout a environ 99% de chances de ne pas marcher sur un programme de plus de 32 KO. Maintenant, on peut s'amuser à chercher de connaître la distance à chaque fois, mais c'est vite pénible. Donc autant laisser décider le linker qui peut facilement calculer ces distances.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°8   Marquer comme non lu.
geogeo Ecrit le: Vendredi 12 novembre 2004 à 16:42 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


OK bon avec mes recherches dans le débogeur je conclus pour l'instant que mon fichier change de position dans la mémoire malgré que j'ai locké son handle. Je vais voir ça en détails!

[EDIT] Je viens de trouver le bug.

Comment optimiser ce code?

move.b    (%a0)+,%d0
lsl.w     #8,%d0
move.b    (%a0),%d0


Je pense qu'il faut utiliser swap.w mais ça ne fonction pas comme je veux!
-Edité le Vendredi 12 novembre 2004 à 17:09 par geogeo-
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°9   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 12 novembre 2004 à 18:34 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Tu peux utiliser la méthode de Samuel Stearley:
move.b (%a0)+,-(%a7);move.w (%a7)+,%d0;move.b (%a0),%d0
(Indice: Les pushs/pops d'octets sur la pile sont spéciaux.)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°10   Marquer comme non lu.
geogeo Ecrit le: Vendredi 12 novembre 2004 à 18:38 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


C'est très rapide ce genre de chose? Je vais tester on verra bien.
Sinon la pile A7 s'aligne automatiquement lorsque l'on place un octet dans tous les cas?
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°11   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 12 novembre 2004 à 18:46 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Avec -(%a7) et (%a7)+, oui. Si tu fais un addq.l #1,%a7, non.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°12   Marquer comme non lu.
Folco Ecrit le: Samedi 13 novembre 2004 à 09:49 Déconnecté(e)    Voir le profil de Folco Envoyer un email à Folco Envoyer un message privé à Folco  


D'ailleurs on peut en profiter pour optimiser de cette feature %)
<<< Kernel Extremist©®™ >>>
Pas la peine d'aller là plus d'une fois tous les six mois...

"Il faut apprendre pour savoir qu'il faut apprendre pour savoir."
    
./Post n°13   Marquer comme non lu.
geogeo Ecrit le: Samedi 13 novembre 2004 à 12:32 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


Ouai c'est pas mal comme truc. :)
Bon en tout cas j'ai corrigé mon problème. :)
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
  :: Index » Forum Ti68K » Programmation Assembleur 68K » Line 1111 Emulator (13 réponse(s))
Pages : 1/1     « [1] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 45.45ms avec 18 requetes