60

bah, a la limite, l'idéal est l'utilisation de fichiers séparés...
un en Os pr les menus, un en O3 pr le moteur, par exmepple..;
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

61

C bien
: KK>Tu considère que la non-utilisation de mulu est un "bogue". Au contraire!

Le bogue est que c'est fait même sous -Os.
Enfin si un jour vous voulez supprimer ce "bogue" quand on met -Os, est-ce que vous pourriez mettre -O2 ou -O3 par défault au lieu de -Os?

Non.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

62

C'est stupide vouloir mettre O2 ou O3 par défaut, Os est vraiment un point fort de gcc ...

63

> Mais c'est koi tes instructions bizares? Une subroutine pour la multiplication?
Non, c'est un HeapDeref "manuel" à partir d'un registre, en l'occurence a4 où j'ai mis "HeapTable". C'est pour ça que je citais HeapDeref.
GCC générait des opérations sur des longs (inutiles, mais il ne peut pas le savoir). Comment pourrait-on lui faire comprendre que le tableau ne fait que 8000 octets et qu'il n'est pas censé avoir des élements d'index négatifs ?
Quoi qu'il en soit, j'ai gagné au moins 100 octets en recodant avec de l'ASM inline avec opérandes C ces HeapDeref "manuels".

Je pense que tthdex serait au moins 2 KO plus gros que ce qu'il n'est actuellement (moins de 12 KO) si je n'avais rien optimisé. Et je réfléchis à faire une global register variable (ça n'est pas pour tout de suite). La table de relocations est assez petite, mais on pourrait presque tout supprimer avec une global register variable. Comme je n'utilise plus OPTIMIZE_ROM_CALLS car j'utilise les ROM_CALLs en F-Line, je peux récupérer a5. Il faut aussi voir si je conserve "HeapTable" dans a4 dans tout le programme, vu que maintenant, avec les ROM_CALLs en F-Line, il est plus avantageux en taille d'utiliser un HeapDeref en ROM_CALL que d'utiliser un HeapDeref "manuel".


Je vais continuer dans la mesure du possible à faire comme Thomas: utiliser la release de TIGCC pour les releases. Pour moi, ça sera 0.94, patchée si nécessaire (si un gros bug est trouvé). Avant c'était 0.93 patchée pour la détection des V200, d'AMS 2.08, etc.
Après, il faudra voir au cas par cas, en fonction du type de programme et de ce dont il a besoin. Par exemple, TICT-Explorer tirera profit d'un GCC 3.3 et du nouveau linker, mais il a de toute façon besoin de nombreuses optimisations à la main auparavant... Je vais lui appliquer quelques trucs que j'ai déjà appliqués avec succès dans tthdex, notamment l'optimisation des tableaux de strings. Ca a gagné des centaines d'octets dans tthdex, et TICT-Explorer a plus de tableaux de strings que tthdex.
Si j'arrivais à réduire à moins de 20 KO le fichier tictexpl (ce qui est loin d'être fait et qui n'est peut-être même pas possible), ça serait bien.


Je n'utilise -Os que rarement, mais il est en effet stupide de mettre -O2 ou pire, -O3 par défaut... Ca va générer un code plus gros, voire énorme si on a -O3. Et avec -O3, il faut faire attention notamment aux problèmes d'inlining (déclarer les routines courtes en assembleur __attribute__((__noinline__)), etc.)
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

64

nEUrOO
: Os est vraiment un point fort de gcc ...

Mais malheureusement, les développeurs de GCC travaillent beaucoup plus sur l'optimisation en vitesse qu'en taille, et ça se reflète à plusieurs endroits (le problème de mulu n'en est qu'un). sad Par exemple, il n'y a pas vraiment d'optimisations spécialement conçues pour optimiser en taille, -Os ne fait que désactiver les optimisations qui pessimisent la taille et changer quelques paramètres dans les autres.
XDanger
: Je vais continuer dans la mesure du possible à faire comme Thomas: utiliser la release de TIGCC pour les releases.

Personnellement, je te conseillerais plutôt d'utiliser la bêta la plus récente (sauf peut-être les premières bêtas de TIGCC 0.95, parce que le nouveau linker apportera probablement quelques bogues au début, même si dans nos tests, il marche très bien). En général, les bêtas sont moins boguées que les releases précédents (même s'il y arrive qu'une bêta soit complètement inutilisable, auquel cas elle est vite remplacée par une autre).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

65

Kevin Kofler :
Mais malheureusement, les développeurs de GCC travaillent beaucoup plus sur l'optimisation en vitesse qu'en taille, et ça se reflète à plusieurs endroits (le problème de mulu n'en est qu'un). sad Par exemple, il n'y a pas vraiment d'optimisations spécialement conçues pour optimiser en taille, -Os ne fait que désactiver les optimisations qui pessimisent la taille et changer quelques paramètres dans les autres.


Oui, mais c'est normal de leur part de faire ça, il ne veulent toucher que les programmeurs PC, et dans ce cas là, ils s'en foutent de la taille malheuresement...

66

Personnellement, même les programmes pour PC, je les compile en -Os. Par exemple, les programmes C de TIGCC (y compris GCC) sont tous compilés en -Os.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

67

> Oui, mais c'est normal de leur part de faire ça, il ne veulent toucher que les programmeurs PC, et dans ce cas là, ils s'en foutent de la taille malheuresement...
Malheureusement...
Il faut dire que si les PC était mieux faits (l'assembleur x86 est horrible comparé à l'assembleur 68k, mieux conçu, plus puissant à l'origine et plus clair...), il y aurait moins besoin de vitesse !


C'est en effet à cause du nouveau linker que je préfère attendre avant d'utiliser TIGCC 0.95 Beta pour les releases. Ca m'étonnerait qu'il y ait d'énormes problèmes, mais bon...

Kevin, ça changerait beaucoup la taille si tu compilais en -O2 ? On n'en est pas à 200 ou 300 KO près, i.e. une minute de téléchargement, sur 4 MO de toute façon...
En revanche, pour les sources, je pense qu'il faudrait fournir une version des sources sans le système d'aide, qui représente à lui seul, même compressé, plus de la moitié de la taille des sources.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

68

Kevin Kofler
:
C bien
: 2°/ Kevin (membre de la TIGCC Team) à contesté le remplacement de mulu 30,x par quatres instructions. Je signalerais juste que dans les progs compilés du C avec TIGCC (.94 et les options par défaults), toute multiplication par 30 se fait de la sorte!
Je suis déjà au courant de ce bogue.

Bon:
1. Déjà, ce n'est pas correct. Il y avait ce problème avec d'autres nombres, mais pas avec 30. Même en optimisant en vitesse, muls est utilisé pour multiplier par 30, d'ailleurs. (Chose qui est peut-être à corriger elle aussi, mais personnellement je m'en fiche de l'optimisation en vitesse, donc j'attends vos patches. tongue)
2. Je viens de corriger ce bogue. Cf. http://pub26.ezboard.com/ftichessteamhqfrm10.showMessage?topicID=86.topic pour le patch qui corrige le bogue. Toutes les modifications sont conditionnelles sous optimize_size, donc si vous utilisez -O1, -O2 ou -O3 (ou -O0 grin), elles ne vous toucheront pas du tout.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

69

1>Je suis désolé, mais moi il me fait les quatre opérations. Peut-être que si c'est un non-signé qu'on multiplie par 30, il fait les 4 opérations, sinon un muls (à verifier).
Seb C bien

C bien, C beau, C ni Bosch ni Bush: C ++

70

1. Peut-être qu'il faudrait attendre que Kevin Kofler distribue la version corrigée pour que tu puisse vraiment essayer...

71

Jackie> Il a dit "avait", c'était référence aux versions précédentes, il contestait l'existence du "bogue" avec 30.
Seb C bien

C bien, C beau, C ni Bosch ni Bush: C ++

72

C bien
: 1>Je suis désolé, mais moi il me fait les quatre opérations. Peut-être que si c'est un non-signé qu'on multiplie par 30, il fait les 4 opérations, sinon un muls (à verifier).

Ça a peut-être changé entre GCC 3.2.1 et 3.3.1-pre. Je n'ai testé qu'avec GCC 3.3.1-pre.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

73

Mais de toute façon, le plus important, c'est que c'est corrigé maintenant. smile
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

74

Pour l'histoire du btst, il y a des personnes qui sont en train de travailler sur un patch pour GCC 3.3 qui améliorera entre autre le support pour btst, donc je vais attendre ce qu'ils vont nous sortir et essayer d'adapter le patch (le porter du Coldfire, un dérivé du 68k à jeu d'instructions réduit, vers le 68000).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

75

je vais peut essayer de réecrire les fonctions de sprite
1) en tenant compte de vos remarques
2) en me basant sur la source de tigcc

(l'idée première est de me satisfaire de mes moyens préhistoriques on-calc, mais je doute que mes fonctions vous soient très utiles)
Le gentil timide du 64