hibOu
:
Kevin Kofler :
Ben, des options comme OPTIMIZE_ROM_CALLS n'ont un sens que si elles sont définis dans tous les fichiers: le code de démarrage (le fichier principal dans les versions obsolètes de TIGCC) doit initialiser %a5, et le registre doit être réservé dans tous les fichiers pour que GCC ne le modifie pas. Et puis quel intérêt d'utiliser les ROM_CALLs optimisés dans certains fichiers et pas dans d'autres? Si on a la table des sauts en %a5, autant l'utiliser plutôt que de faire un move inutile!
Pour OPTIMIZE_ROM_CALLS, je dis pas, car c'est une option qui peut s'apparentée aux -O...
Mais un MIN_AMS, devrait être propre à un fichier, quitte a ce que le linker vérifie entre les fichiers.
Non,
MIN_AMS est une propriété du programme entier, pas par fichier:
1. La vérification est faite dans le code de démarrage.
2. Si TIGCCLIB sait que ton programme a de toute façon besoin de AMS 2, elle ne va pas se fatiguer à utiliser des hacks pour utiliser certaines fonctions exportées seulement dans AMS 2 aussi sous AMS 1, elle va utiliser les fonctions directement. Donc définir un
MIN_AMS différent dans des fichiers différents conduirait à un programme plus inefficace sans que le programmeur s'en rende compte.
hibOu
:
Kevin Kofler :
Exemple encore plus frappant: SAVE_SCREEN. Cette option n'affecte que le code de démarrage, alors quel sens a-t'il de définir cette option dans certains fichiers et pas dans d'autres?
justement, il n'affecte que le fichier ou il y a le _main....
Totalement faux. Tu en es encore à TIGCC 0.94! Dans TIGCC 0.95, le code de démarrage ne correspond à
aucun de tes fichier source (il est dans
tigcc.a). L'option
SAVE_SCREEN génère une importation qui dit au linker de rajouter le code de démarrage correspondant. Et cela même si c'est défini dans un module autre que le module principal. (Donc si on change d'avis et on ne veut plus que l'écran soit sauvegardé automatiquement, dès qu'on oublie de changer ou recompiler un fichier, c'est râté. Et encore, c'est une option où les inconsistences ont peu d'effets. Avec d'autres, c'est le plantage direct si elles sont définies de manière inconsistente.)
Godzil :
alors pourquoi les options sont globales ?
(edit|cross: je parlait au #103 bien sur ^^)
Parce que le code de démarrage est global au programme et ne correspond à aucun fichier particulier. Toi aussi, tu dois être resté bloqué au mode de pensée dépassé du système de linking obsolète de TIGCC 0.94.