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 » Pong (33 réponse(s))
./REPRISE DU POST PRECEDENT (post n°19)   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 13:47 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  

> Ca grossit le fichier et le jeu est plus lent... (il pase de 1.27ko a 1.64 et il est au moins 2* plus lent).
... Ne me dis pas que tu as enlevé -Os -W -Wall -Wwrite-strings ?? Si oui, forcément que c'est plus gros et plus lent. Compiler sans optimisation...

-ffunction-sections -fdata-sections ne fait pas partie des options de l'original.

> *2 est plus rapide que <<1 ?? :s
Si c'est fait par une multiplication, non. Mais quand un compilateur pour le 68000 original te générera une multiplication pour une multiplication par une puissance de deux, tu pourras le mettre à la poubelle ! Pour un *2, un vrai compilateur générera une addition dans la plupart des cas (à vérifier pour une opération en mémoire par rapport à un lsl).

[EDIT: cross]
-Edité le Samedi 2 juillet 2005 à 13:48 par Lionel Debroux-
Lionel Debroux - membre de TICT.
    
./Post n°20   Marquer comme non lu.
RHJPP Ecrit le: Samedi 2 juillet 2005 à 13:59 Déconnecté(e)    Voir le profil de RHJPP Envoyer un email à RHJPP Envoyer un message privé à RHJPP  


Je n'ai rien changé et je les ai ces options : -ffunction-sections -fdata-sections
Alors ça doit y être par défaut ?
    
./Post n°21   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 14:23 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  

Alors ça doit être tout nouveau. Je n'ai pas créé de nouveau projet TIGCC depuis un certain temps...
Lionel Debroux - membre de TICT.
    
./Post n°22   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 2 juillet 2005 à 15: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  


Lionel Debroux :
_keytest_optimized pour les touches de direction, vu qu'elles sont toutes sur la même ligne clavier.

Mais c'est plus compliqué à utiliser...

Quelles options de compilation utilises-tu ? Les options par défaut de TIGCC sont faites pour garder la compatibilité antérieure, et ne pas contenir d'options bizarres qui pourraient ne pas convenir à du code bizarre, mais donnent du code qui est tout sauf optimisé (et encore, ça va mieux depuis que les -Ox impliquent -fomit-frame-pointer).

N'exagérons pas...

-Wa,-l -Wa,--all-relocs

1. Ça ne passera pas dans l'IDE, il faut mettre -l --all-relocs dans les options de l'assembleur (GNU), pas -Wa,-l -Wa,--all-relocs dans les options du compilateur.
2. Inutile de mettre --all-relocs, c'est mis automatiquement si on a coché les bonnes optimisations linker.
3. Mettre -l ne sert généralement pas avec les optimisations linker (sauf si on est vraiment dans des cas limite où le linker ne peut pas optimiser quelques références parce qu'il n'optimise qu'une référence à la fois et qu'il faudrait optimiser les deux en même temps). Et ce n'est plus du tout nécessaire avec -mpcrel, qui gère maintenant directement du code garanti relatif (depuis la bêta 4).

-mpcrel -mregparm=5

OK, mais d'autres réglages de -mregparm pourraient mieux convenir dans certains cas.

-ffunction-sections -fdata-sections

C'est déjà dans les réglages par défaut.
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°23   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 15:49 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  

> N'exagérons pas...
Ben, un programme découpé à l'excès en fonctions prenant plusieurs paramètres, en __stkparm__ (défaut), sera tout sauf optimisé, par rapport à ce qu'il serait si on avait utilisé -mregparm.
Lionel Debroux - membre de TICT.
    
./Post n°24   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 2 juillet 2005 à 15:55 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  


Si les fonctions sont déclarées static (locales au fichier) et si on ne prend pas leur adresse, GCC 4 les passe automatiquement en regparm(2) (sauf bien sûr si elles sont déclarés avec un attribut de convention d'appel explicit, et sauf si on est en mode -mregparm=n). On n'utilise pas un regparm(n) avec un n plus grand parce que ce n'est pas toujours une bonne idée. Bien sûr, il faut avoir la discipline d'utiliser static (ce qui est très important aussi pour permettre l'inlining automatique - une fonction static soit appelée une seule fois, soit plus petite qu'un appel de fonction est inlinée même en -Os parce que ça économise de la taille). On ne peut pas faire tout ça avec des fonctions visibles dans tous les fichiers parce qu'on ne sait pas si et comment les autres fichiers utilisent cette fonction.
-Edité le Samedi 2 juillet 2005 à 15:55 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°25   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 16:07 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  

Malheureusement, l'expérience montre que "static" est assez rare. Comme beaucoup de programmeurs ayant appris le C en-dehors de cours, j'ai appris la véritable signification de "static" cette année en cours.
A peu près aucun programmeur ne tient encore compte de GCC 4... Pourtant, il va falloir, parce qu'il ne se manie (pour le moment ?) pas pareil que les autres, notamment le vilain asm(""::"a"(ptr)).
Lionel Debroux - membre de TICT.
    
./Post n°26   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 2 juillet 2005 à 16:23 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 "vilain asm(""::"a"(ptr))" n'est pas qqch. que je conseillerais pour l'usage général, et surtout pas à un débutant. C'est un hack moche qui risquera de causer plus de problèmes qu'il ne résout quand GCC évoluera. En général, je ne rajoute pas de workarounds pour les défauts d'optimisation de GCC dans mes programmes sauf si c'est inévitable (le fameux problème de mode d'adressage pour la différence d'adresses dans ttstart-titanium, obsolète depuis qu'il y a pstarter et ttstart 2.00).
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°27   Marquer comme non lu.
Lionel Debroux Ecrit le: Samedi 2 juillet 2005 à 17:00 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  

> > _keytest_optimized pour les touches de direction, vu qu'elles sont toutes sur la même ligne clavier.
> Mais c'est plus compliqué à utiliser...
C'est petit comme argument. Non seulement c'est plus rapide (même si là, on s'en fout), mais ça risque surtout d'être plus petit...

C'est la première fois que je fais ce type de trucs dans un programme diffusé. Je les enlèverai si un GCC plus récent les rend non nécessaires ou carrément nuisibles (mais là, il n'y aura pas que le hack qui sera nuisible - les programmeurs travaillant sur GCC et qui arriveront à ce résultat "formidable" seront qualifiables de cette façon; à ce moment-là, ils pourront carrément enlever le asm("...") de GCC).
Lionel Debroux - membre de TICT.
    
./Post n°28   Marquer comme non lu.
Pollux Ecrit le: Dimanche 3 juillet 2005 à 22:31 Déconnecté(e)    Voir le profil de Pollux Envoyer un email à Pollux Envoyer un message privé à Pollux  

Lionel Debroux :
> "<<1"
Non, "*2". Le compilo ne traduira en principe jamais ça en "<<1" car ce n'est jamais plus petit, mais toujours plus lent, quelle que soit la taille de la donnée.

gni ? "<<1" et "*2" sont, à tous points de vue, équivalents... http://yn1.free.fr/v31/gfx/s/redface.gif
-Edité le Dimanche 3 juillet 2005 à 22:33 par Pollux-
    
./Post n°29   Marquer comme non lu.
Kevin Kofler Ecrit le: Dimanche 3 juillet 2005 à 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  


x*2 et x<<1 sont toujours traduits en x+x par GCC.
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°30   Marquer comme non lu.
Pollux Ecrit le: Dimanche 3 juillet 2005 à 22:36 Déconnecté(e)    Voir le profil de Pollux Envoyer un email à Pollux Envoyer un message privé à Pollux  
  -- Post locké --
 
    
./Post n°31   Marquer comme non lu.
Onur Ecrit le: Mardi 5 juillet 2005 à 00:13 Déconnecté(e)    Voir le profil de Onur Envoyer un email à Onur Visiter le site WEB de Onur Envoyer un message privé à Onur  


Lionel Debroux :
> est-ce que tigcc transforme xballe=xballe+xb en xballe+=xb automatiquement?
Evidemment, c'est le standard C.


euh.. attend, je ne demande pas l'inverse, on est d'accord? J'étais pas assez clair. En fait ma question serait plutot: "Est-ce qu'il optimise de manière à le comprendre comme un opérateur += ?"
Je ne veux pas faire quelque chose de bien, je cherche l'excellence:ETP Studio...


et autres projets à finir avant 2010
    
./Post n°32   Marquer comme non lu.
Kevin Kofler Ecrit le: Mardi 5 juillet 2005 à 02:40 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°33   Marquer comme non lu.
Lionel Debroux Ecrit le: Mardi 5 juillet 2005 à 08:30 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  

D'autant plus que le 68000 est un CISC.
Lionel Debroux - membre de TICT.
    
  :: Index » Forum Ti68K » Programmation C » Pong (33 réponse(s))
Pages : 2/2     « 1 [2] » »|

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