
J'ai passé toute la journée à corriger les bugs de GTC on-calc

Encore désolé, mais je ne crois pas pouvoir sortir GTC ce week-end, mais j'espère pouvoir le sortir un week-end après les vacances.
> Je trouve le projet de GTC très interessant mais le top serait de réunir TIGCC et GTC pour faire un compilateur de tonnerre avec des fonctions avancés...
C'est extrêmement difficile. GTC et TIGCC fonctionnent très différemment (c'est surtout dû au fait que GTC a la contrainte d'être compatible on-calc, tandis que GCC a la contrainte d'être portable pour d'autres plateformes que le 68k - résultat, GTC ne peut pas se permettre de faire les optimisations extrêmement coûteuses en temps et en mémoire, alors que TI-GCC "loupe" peut-être certaines optimisations parce que son système d'optimisation est trop généraliste).
> > XDanger a quand même fini par reconnaître que GTC était un projet très intéressant
> Oui. Mais plus je découvre de manques à GTC, moins je le trouve intéressant...

Ca dépend si tu veux programmer on-calc ou pas...
C'est en effet une idée très intelligente (non, je ne suis pas ironique). Les fonctions du tonnerre sont toutes du côté de TIGCC, mais il manque une version on-calc à TIGCC. C'est sûr que les deux projets sont complémentaires: TIGCC pour la puissance des fonctions on-pc, GTC pour la possibilité de programmer on-calc (il manque quelques trucs à GTC, et la taille de la mémoire est limitée on-calc...)
Le problème c'est que si on les mélangeait on aurait un compilo PC-only moins optimisé

(bon j'exagère, mais le problème c'est que les inconvénients s'ajoutent, et pas les avantages)
Le seul grand mérite de GTC, c'est d'avoir une version on-calc. Mais elle a ses limites: taille des headers et des libs statiques.
Excuse-moi, mais la majeure partie de la TI-GCC Lib tient en 40 ko
Et Extgraph tient en 36 ko non compressé alors que 90% des fonc ne servent pas (pour un programme donné, je précise)...
> Il faut aussi ajouter à cela que comme le code du compilateur proprement dit dans les versions PC et calc est le même, d'après ce qu'il avait dit, la version PC se trouve de fait en-dessous de TIGCC en termes de fonctions.
Oui. Mais les bench montrent que la différence n'est pas très significative.
> Sur GTC, la vitesse de compilation est peut-être plus élevée (on verra les benchs...)
Tu peux dire "certainement"...
> et la taille plus faible (Kevin a récemment diminué de façon très importante la taille de GCC en compilant sans les options de debug, ça risque aussi d'accélérer la compilation...)
Certainement aussi...
> mais est-ce que ces arguments tiennent vraiment debout (à moins d'être sur des PC totalement dépassés depuis au moins 4 ans) ?
La vitesse de compilation est utile pour le débogage, après rien n'interdit de finaliser avec TI-GCC. Mais par contre la taille on s'en fout effectivement
Et je le répète, GTC n'est pas principalement destiné à être on-PC.
On ne peut pas "mettre ensemble" TIGCC et GTC. Leur structure est totalement différente. GTC est du "tout en une passe", GCC a des optimisations élaborées et utilise plusieurs représentations intermédiaires.
GTC n'est pas du "tout en une passe"
GTC utilise des arbres pour se réprésenter les expressions et les structures de contrôle, puis fait tout un tas d'optimisations sur les arbres (ça fait plein de passes

), génère un code intermédiaire à partir de ces arbres, puis génère de l'ASM à partir de ce code un intermédiaire.
Et tu as l'air de dire que "plus il y a de passes, mieux c'est" - mais il n'y a pas que le nombre de passes, il y a aussi la qualité des algos. Par exemple, mon packer on-calc compresse le fichier en une seule passe (eh oui!), ce qui ne l'empêche pas de n'avoir qu'1,2% de différence en taille dans le pire des cas avec TTPack si on restreint la fenêtre LZ à la même taille qu'on-calc, mémoire oblige (i.e. 3% au total sur des gros fichiers, bcp moins sur des petits).
> GTC utilise aussi plusieurs passes, mais elles se font à l'intérieur du même programme et sont plus ou moins entrelacées.
En quelque sorte, oui
> création d'un format de .tpr commun pour améliorer la portabilité (je dirais que c'est à Pollux de s'aligner sur votre format)
Bonne idée
> Elles sont tellement entrelacées que c'est en fait une seule passe.
Tu m'énerves, Kevin, à tjs vouloir parler de ce que tu ne sais pas! C'était la même chose plusieurs fois dans ce topic (regparm, etc...), et je ne pouvais pas te corriger puisque je n'étais pas chez moi
Non, cf plus haut
> On lui en fait depuis des mois, des suggestions. Mais il ne les écoute pas. Ça fait longtemps que je lui dis:
> * d'arrêter de rajouter des extensions de langage à GTC qu'il pense lui-même être inimplémentables dans GCC (et de retirer celles qui y sont déjà)
Ces extensions sont présentes depuis pas mal de temps. Pour ce qui est de l'implémentabilité, effectivement cdefined() risque d'être très difficile à rajouter dans TI-GCC, et je ne le mettrais peut-être pas dans GTC - ou alors seulement dans des fonctions internes à la lib, pour éviter des hacks sales du style SYMSTR/SYMSTR_CONST.
Par contre, #macro et le changement au cours d'un fichier des options de compilations sont vraiment utiles et sont à mon avis parfaitement implémentables dans TI-GCC (même si je ne connais pas vraiment les détails de la structure interne de GCC). J'ajoute que le changement d'options de compilation ne constitue pas une incompatibilité puisqu'on peut très bien faire en sorte que TIGCC les ignore. #macro permet, entre autres, d'éviter plein de hacks sales.
> de passer le temps qu'il passe à rajouter ces extensions à implémenter les fonctionnalités de TIGCC qui manquent à GTC
> mais il s'en fiche.
Je ne m'en fiche pas. Je fais tout ce qui est en mon pouvoir pour avoir un compilo rapide et léger qui puisse fonctionner sur calculatrice, tout en maintenant une bonne compatibilité avec TIGCC. Je suis désolé, mais certaines extensions de TIGCC ne seront
jamais dans GTC (à moins que les TI passent à 1 Mo de RAM et un 68k à 30 MHz

)
> TIGCC était là avant. Donc c'est à celui venu après d'être compatible avec ce qu'il y a déjà.
Un compilo on-calc ne peut pas se le permettre, cf réponse précédente.
> Nous avons toujours documenté toutes nos extensions de langage. Pollux, lui, m'a pondu une liste largement incomplète à ma demande explicite il y a quelques jours.
Je n'ai pas eu le temps de rédiger une doc complète
Pour ce qui est des extensions de langage, je ne trouve pas la doc du 'register var asm("rn")' dans TI-GCC. De même, je ne vois nulle part à quels registres sont affectées les variables pour __regparm__ (mais j'ai peut-être mal cherché...)
> Je vous laisse imaginer ce que ça va donner si on implémente ces extensions stupides élaborées en secret par Pollux sans jamais discuter de la faisabilité pour d'autres compilateurs avec les mainteneurs de ces autres compilateurs.
Tu crois sincèrement que le préprocesseur de GCC va évoluer fondamentalement?

#macro ne demande a priori que des légères modifications dans le préprocesseur.