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 » Organisation en GNU68K (3 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
geogeo Ecrit le: Samedi 30 octobre 2004 à 15:10 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 un petit pb d'organisation des fichiers en GNU68K.

Mon projet s'organise de la façon suivante:
main.asm = contient les fonctions d'initialisation...
file.asm = contient les fonctions de gestion des fichiers
Tbl_Errors.asm = contient la table des erreurs
Tbl_Tokens.asm = contient la table des tokens qui pointent vers des fonctions.
TokensExec.asm = contient les fonctions de gestion de la pile d'exécution
TokensBase.asm = contient les fonctions de base (fonctions mathématiques simples, sauts...)
Variables = contient la liste des variables.

Tbl_Tokens.asm contient les infos suivantes:
        .data
   .global  Tbl_Tokens
Tbl_Tokens:
  .long   ExecToken_None
  .long   ExecToken_Jump
  .long   ExecToken_If
  .long   ExecToken_IfJump
  .long   ExecToken_Clear
  .long   ExecToken_EOFLine
  .long   ExecToken_EndTag
  .long   ExecToken_PointVirgule
  .long   ExecToken_Apost
  ...


TokensBase.asm contient les fonctions nommées par Tbl_Tokens mais vides suivies d'un rts donc.

Enfin reste TokensExec.asm
    .xdef     TokensExec_Run

TokensExec_Run:
     move.w    #1,error_line
     lea.l     ptrData_ES(%PC),%a5
     
_Run_loop:     
     tst.b     error_number          |Arrêt en cas d'erreur
     jbne      _Run_EndLoop            
     move.l    TokensFile_DataPtr(%PC),%a0      |Pointeur d'avancement de lecture des données
     cmpa.l    TokensFile_DataMaxAdr(%PC),%a0    |Dépassement données
     jbge      _Run_EndLoop
     move.b    (%a0),%d0          |Lecture TOKEN
     and.l     #0xFF,%d0          |Vide registre, récupère les 8 bits LSB
     lsl.l     #2,%d0          |Multiplie par 4
     lea.l     Tbl_Tokens(%PC),%a0        |Charge la table dans a0
     move.l    (%a0,%d0.l),%a0
     jbsr      (%a0)           |Execute routine
     addq.l    #1,TokensFile_DataPtr        |Avance de 1 octet le pointeur de lecture des données
    jbra    _Run_loop
_Run_EndLoop:    
    rts

    .end


Le problème est simple, si j'assemble le programme j'ai une belle erreur (Memory) (tout simplement parce que je pense qu'il ne trouve pas les fonctions pointées par Tbl_Tokens, j'ai donc décidé dans la liste des fichiers d'inverser l'ordre de TokensBase.asm et TokensExec.asm ce qui donne une liste qui se présente de cette façon:
main.asm
file.asm
Tbl_Errors.asm
Tbl_Tokens.asm
TokensBase.asm
TokensExec.asm
Variables.asm

J'assemble le programme et à ma grande surprise le programme fonctionne sans pb. Je voudrais donc savoir comment organiser mon projet sans pour autant que l'ordre des fichiers modifie le comportement de l'assembleur?
-Edité le Samedi 30 octobre 2004 à 15:13 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°1   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 30 octobre 2004 à 21:43 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 me faire parvenir la source entière? Parce que là, je ne peux vraiment pas dire où est le problème...
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.
Kevin Kofler Ecrit le: Samedi 30 octobre 2004 à 22:33 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  


Problème règlé, c'était une erreur dans les sources (exécution de données parce qu'il avait mis le move.l (%a0,%d0.l),%a0 en commentaire, donc plantage "aléatoire" en fonction des adresses des labels contenus dans la table).
-Edité le Samedi 30 octobre 2004 à 22:33 par Kevin Kofler-
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°3   Marquer comme non lu.
geogeo Ecrit le: Samedi 30 octobre 2004 à 22:55 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


yep, j'suis trop nul #ouin#
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 » Organisation en GNU68K (3 réponse(s))
Pages : 1/1     « [1] » »|

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 44.77ms avec 18 requetes