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 C » differencier les calc lors de la compilation (15 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
LionelA Ecrit le: Jeudi 5 août 2004 à 20:22 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


J'ai déja posté cette demande sur un autre forum mais ils n'y a pas l'air d'avoir beaucoup de gens qui connaissent la reponse , je demande donc ici :

est ce qu'il y a un moyen de differencier les calc lors de la compilation, avec des constantes du preprocesseur

exemple :

#ifdef TI89

(code special pour la ti89, style le masquage des touches du clavier)

#endif

#ifdef TI92P

(code special pour la ti92+)

#endif

#ifdef V200

(code special pour la ti92+)

#endif

Et ce pour que les executables produits par tigcc contienne la section de code correspondant, selon que ca soit le 89z le 9xz ou le v2z

Est ce que des constantes de ce style existe ? (c'est a dire mise a jour par le compilateur au moment ou il compile)


Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°1   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 5 août 2004 à 20:31 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  


Il n'y a pas de moyen automatique de gérer ça. Nous outils (IDE, tigcc.exe) compilent tout fichier .c exactement une fois par compilation. On peut faire insérer des nombres dépendant des modèles au linker, mais on ne peut pas faire de la compilation conditionnelle automatiquement.

Cela dit, tu peux regarder comment les logiciels de la TICT gèrent ça. L'idée est d'avoir:
// Supplanter les définitions automatiques de l'IDE.
#undef USE_TI89
#undef USE_TI92P
#undef USE_V200

// Mettre en commentaire la définition indésirée.
#define USE_TI89 // Compile pour TI-89
//#define USE_TI92P // Compile pour TI-92+

// Version TI-92+ == version V200.
#ifdef USE_TI92P
#define USE_V200
#endif

(Si tu préfères, tu peux aussi cocher/décocher les cases dans les options du projet pour gérer ça, c'est un peu plus propre.) Et ensuite, tu peux utiliser #ifdef USE_TI89, #ifdef USE_TI92P, #ifdef USE_V200.

Sinon, ce que tu peux aussi faire dans pas mal de cas est de mettre:
if (TI89) {
// code TI-89
} else [
// code TI-92+
}

Cela a l'avantage de permettre aussi la compilation d'une version compatible on-calc. Et si on compile pour TI-89 seulement, if (TI89) est toujours vrai, et GCC le sait, si on compile pour TI-92+ et V200 seulement, if (TI89) est toujours faux, et GCC le sait aussi. Donc le code est viré en optimisant si on compile pour un seul modèle.
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.
LionelA Ecrit le: Jeudi 5 août 2004 à 20:51 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Merci bien c'est la reponse que j'attendais :)

Je vais utiliser les #ifdef USE_TI89 etc en decochant les cases car il faut que ca conditionne d'autre #define (pour la taille de l'ecran etc...)
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°3   Marquer comme non lu.
Sasume Ecrit le: Jeudi 5 août 2004 à 21:24 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Kevin> Pourtant quand on écrit du code contenant "CALCULATOR", si on a activé OPTIMIZE_CALC_CONSTS tigcc génère 2 exécutables différents, comment cela se passe-t-il ?
    
./Post n°4   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 5 août 2004 à 23:20 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  


Le fichier est compilé et assemblé une seule fois (avec des symboles réservés de style __ld_calc_const_2_0_1_3), et le linker insère les constantes tout à la fin du linking, en la phase d'exportation.
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.
LionelA Ecrit le: Jeudi 5 août 2004 à 23:49 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


cela veut donc dire que les pseudo constantes ne sont pas evaluées pendant l'execution mais sont belle et bien placées dans le code lors de l'edition de liens ? (a moins que je capte rien)
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°6   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 6 août 2004 à 00:14 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  


Oui.
Mais si tu fais du:
if (TI89) {
// code TI-89
} else [
// code TI-92+
}

avec du OPTIMIZE_CALC_CONSTS, tu auras quand-même les 2 versions du code dans l'exécutable, avec un if (0) ou if (1) non-optimisé (parce qu'on ne va quand-même pas nous amuser à mettre un optimiseur complet dans le linker). Donc ce n'est pas une bonne solution pour ton cas, il faut vraiment compiler 2 (ou 3 si tu veux une version à part pour la V200) fois.
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°7   Marquer comme non lu.
Lionel Debroux Ecrit le: Vendredi 6 août 2004 à 10:10 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Pour un code optimisé au maximum (taille et vitesse), il convient de faire une version TI-89/89T, et une version TI-92+/V200, dans deux TIGCC projects complètement séparés. Les calculettes sont pairées de la sorte car ce sont les modèles qui se ressemblent le plus.
Cela n'empêche pas d'utiliser if(TI89) { ... } else { ... } ou des C89_92(x,y) tels que ceux des softs de TICT.
Je déconseille OPTIMIZE_CALC_CONSTS, qui est loin de générer du code aussi bon que les compilations séparées - même s'il est meilleur que la compatibilité on-calc pure et dure. Voir Ice Hockey 68k quand on essaie les trois façons de faire...
Lionel Debroux - membre de TICT.
    
./Post n°8   Marquer comme non lu.
LionelA Ecrit le: Vendredi 6 août 2004 à 11:09 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


Ouais c'est une bonne idée de faire trois projets séparés, il me faut differencier les 3 calc car chaque version aura des touches differentes (2nd, diamond, shift pour 89, f1,f2,f5 pour 92+ et hand, f1, Q pour v200)

Sinon je sais que ce n'est pas le bon endroit pour faire des suggestions mais serait il possible de faire en sorte que tigcc compile trois fois en mettant a jour des constantes du preprocesseur pour differencier les calc (apparement tout le monde est concerné)
Je ne sais absolument pas si cela est difficile a implementer par rapport a la version courante...
Si tu ne veux pas repondre ici, pourrais tu lancer le topic sur ton forum ? ( la reponse m'interesse pas mal )
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°9   Marquer comme non lu.
Lionel Debroux Ecrit le: Vendredi 6 août 2004 à 17:11 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Trois projets, c'est un peu bête, les versions TI-92+ et V200 étant très similaires... Du SMC te débarrasserait de ce problème.
Lionel Debroux - membre de TICT.
    
./Post n°10   Marquer comme non lu.
LionelA Ecrit le: Vendredi 6 août 2004 à 17:34 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


SMC ?? c'est quoi ?

Sinon j'ai dispatché le code qui différait et j'ai du code source en commun (la majorité) comme ca quand je fait evoluer un projet les 2 autres sont mis a jour directement
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°11   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 6 août 2004 à 19:36 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  


Mon avis personnel, c'est que la compatibilité on-calc est le mieux. On peut envoyer des ASM de n'importe quel modèle à n'importe quel autre, pourquoi l'empêcher artificiellement? (D'ailleurs, je trouve que le prochain ttstart devrait être compatible on-calc. Si j'ai fait 2 versions séparées, c'était avant tout parce que ça allait plus vite de faire la version Titanium de cette manière. Maintenant qu'on a une version Titanium qui marche bien, on a le temps de faire les choses proprement.)
-Edité le Vendredi 6 août 2004 à 19:37 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°12   Marquer comme non lu.
Jfg Ecrit le: Vendredi 6 août 2004 à 19:57 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


SMC = self modifying code ?
Kill Mario
    
./Post n°13   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 6 août 2004 à 20:00 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  


Oui.
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°14   Marquer comme non lu.
Jfg Ecrit le: Vendredi 6 août 2004 à 20:55 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Je suis bon a trouver les acronymes moi!
Kill Mario
    
./Post n°15   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 7 août 2004 à 11:24 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

> On peut envoyer des ASM de n'importe quel modèle à n'importe quel autre, pourquoi l'empêcher artificiellement ?
Pour faire des programmes optimisés en taille et en vitesse. Pourquoi pénaliser artificiellement tous les utilisateurs ? La plupart des calculettes sont maintenant fournies d'origine avec un link, ce qui permet aux utilisateurs de modèles minoritaires (89T, 92+, V200) de se charger les programmes pour leurs calculettes !

Pour la compatibilité on-calc de ttstart, c'est NON. Du moins, pas dans la version officielle - tu feras un fork si tu veux, mais je ferai savoir en détail que et pourquoi je ne suis pas du tout d'accord.
Ca va augmenter la taille (ce dont tu as pourtant horreur - alors que tu es pour la compatibilité on-calc qui donne toujours du code plus gros et plus lent, et avec lequel tu fais régulièrement ***** le monde, surtout quand c'est complètement stupide, tilemap engine d'ExtGraph en premier) !
Lionel Debroux - membre de TICT.
    
  :: Index » Forum Ti68K » Programmation C » differencier les calc lors de la compilation (15 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 55.17ms avec 18 requetes