60

Mais on le sait très bien où elles sont ces options, mais personnellement, je dois chaque fois ouvrir la doc pour mettre les defines pour avoir un executable qui fasse moins de 100 octets. J'aimerais bien moi aussi qu'il existe une page pour choisir les options.
De plus le choix des options par défaut est plus que discutable, en particulier pour le support des exit. Enfin voilà...
avatar
;)

61

>C'est vraiment débile de votre part de les inclure par défaut, de ne pas laisser le programmeur les choisir dans l'assistant de création de projets.
Qui t'empêche de mettre ça dans l'assistant toi-même ? Il me semble que tu as dis que tu connaissais le langage Delphi: vas-y, fais la modification toi-même. Ca sera sympa pour tout le monde...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

62

on va peut-être dire que je manque d'originalité...


Mais on le sait très bien où elles sont ces options, mais personnellement, je dois chaque fois ouvrir la doc pour mettre les defines pour avoir un executable qui fasse moins de 100 octets. J'aimerais bien moi aussi qu'il existe une page pour choisir les options.
De plus le choix des options par défaut est plus que discutable, en particulier pour le support des exit
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

63

Vous n'avez qu'à les apprendre par cœur. 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é

64

ma foi, qd on bosse sur des gros projets, c pas tous les jours qu'on crée un projet...
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

65

Pourquoi l'option OPTIMIZE_ROM_CALLS n'est pas active par défaut ?

66

Parce que ça ne marche pas avec les fonctions callback. (Il faut rajouter:
void *olda5=__jmp_tbl;
__jmp_tbl=*(void**)0xc8;

au début de ces callbacks et:
__jmp_tbl=olda5;
à la fin pour que ça marche.)
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

Heureusement que GTC a un "auto optimize ROM_CALLs" smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

68

Pourrais-tu préciser ce que c'est qu'un "auto optimize ROM_CALLs" ?
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

69

en gros il n'active optimize_rom_calls que quand il le juge nécessaire smile

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

70

A mon avis, c'est un peu bête (parce que l'utilisateur peut ne pas vouloir OPTIMIZE_ROM_CALLS).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

71

> parce que l'utilisateur peut ne pas vouloir OPTIMIZE_ROM_CALLS
Ah oui, et pkoi? (ne me parle d'incompatibilité avec les callback puisqu'il n'y a pas de méthode gore de stockage comme dans TI-GCC)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

72

Pollux
a écrit : (ne me parle d'incompatibilité avec les callback puisqu'il n'y a pas de méthode gore de stockage comme dans TI-GCC)

Tu fais comment pour avoir la bonne valeur en a5 alors? Tu la remets à chaque entrée de fonction? Ce n'est pas du vrai OPTIMIZE_ROM_CALLS alors. Le but de OPTIMIZE_ROM_CALLS est de ne charger l'adresse de la table des ROM_CALLs qu'une seule fois dans le programme.
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 a5 reste disponible pour les fonctions qui ont besoin de bcp de registres ...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

74

> parce que l'utilisateur peut ne pas vouloir OPTIMIZE_ROM_CALLS Ah oui, et pkoi? (ne me parle d'incompatibilité avec les callback puisqu'il n'y a pas de méthode gore de stockage comme dans TI-GCC)

pour avoir un regsitre de plus libre, notament si on n'utilise que peu de RC dans le programme, voila pkoi smile

avec une super vieille version de TIGCC (ça date de plus d'un an), j'ai gagné pas mal de place sur un gros prog utilisant peu de RC en supprimant le optimize_RC...
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

75

Pollux
a écrit : ... mais a5 reste disponible pour les fonctions qui ont besoin de bcp de registres ...

Certes. Mais l'optimisation des ROM_CALLs à l'intérieur d'une fonction n'est pas une innovation du tout. C'est le boulot de l'optimiseur. S'il faut un cas particulier pour les ROM_CALLs, l'optimiseur n'est pas bon. Le seul cas où OPTIMIZE_ROM_CALLS a un intérêt est l'optimisation globale.
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é

76

mais a5 reste disponible pour les fonctions qui ont besoin de bcp de registres

arf... bon, alors ma foi, ne tenez pas compte de ce que j'ai dit plus ho.
g du mal comprendre quelque chose
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

77

Son OPTIMIZE_ROM_CALLS n'est pas un vrai OPTIMIZE_ROM_CALLS, c'est juste une optimisation locale qui devrait être traîtée par une optimisation plus générale (common subexpression elimination), pas par un cas particulier pour les ROM_CALLs.
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é

78

je n'ai pas essayé avec GCC 3.3, mais il me semble que GCC ne le fait pas?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

79

Il me semble qu'il le fait dans certains cas. Mais le pass CSE de GCC n'est pas parfait. (Je n'ai jamais dit que GCC était parfait. Juste qu'il n'y a pas mieux. 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é

80

Je viens de vérifier: GCC est tout à fait capable de mettre la table des ROM_CALLs en un registre parmi a2-a6 automatiquement, et il le fait automatiquement s'il le juge utile. Ça n'a strictement rien à voir avec OPTIMIZE_ROM_CALLS. Si tu as dû mettre un cas particulier pour les ROM_CALLs, c'est un workaround pour une déficience générale de ton optimiseur.

Au fait (et je demande ça surtout par pure curiosité): il fonctionne comment, l'optimiseur de GTC? Par "peepholes" (c'est-à-dire remplacement d'expressions régulières dans le code assembleur, ou quelque chose d'équivalent sur une représentation interne) uniquement? Ou y a-t'il des optimisations plus évoluées, de style common subexpression elimination, constant propagation, copy propagation etc.?
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é

81

> Je viens de vérifier: GCC est tout à fait capable de mettre la table des ROM_CALLs en un registre parmi a2-a6 automatiquement, et il le fait automatiquement s'il le juge utile.
Autant pour moi. J'avais du regarder une vieille version.

> Si tu as dû mettre un cas particulier pour les ROM_CALLs, c'est un workaround pour une déficience générale de ton optimiseur.
Non.

> Au fait (et je demande ça surtout par pure curiosité): il fonctionne comment, l'optimiseur de GTC? Par "peepholes" (c'est-à-dire remplacement d'expressions régulières dans le code assembleur, ou quelque chose d'équivalent sur une représentation interne) uniquement? Ou y a-t'il des optimisations plus évoluées, de style common subexpression elimination, constant propagation, copy propagation etc.?

Il y a le peephole et le CSE, et d'autres (follow branches par exemple). Je ne sais pas ce que tu entends par "constant propagation" ou "copy propagation".

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

82

Constant propagation: si une variable est égal à une constante partout dans un morceau de code, on remplace la variable par la constante dans ce morceau de code.
Copy propagation: si une variable est égal à une autre variable partout dans un morceau de code, on remplace la variable par l'autre variable dans ce morceau de code.

GCC fait tout ça. Il fait aussi le "branch following". Il y a plein d'optimisations intéressantes dans GCC. 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é

83

Aussi, je me demandais, est-ce GCC convertit le code récursif en itératif équivalent où non ?

84

> est-ce GCC convertit le code récursif en itératif équivalent ou non ?
Tu veux dire dérouler les boucles, ou transformer les fonctions récursives ?
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

85

Par exemple, cette fonction :
short somme(short n)
{
 if(n)
  n+=somme(n-1);
 return n;
}

serait compilée comme ça :
short somme(short n)
{
 short resultat=0;

 while(n)
 {
  Empiler(n);
  n--;
 }
 while(!PileVide())
 {
  n+=Depiler();
 }
 return n;
}

Je sais bien entendu qu'il y a des implémentations itératives beaucoup plus fines que ma deuxième solution, mais c'est juste pour essayer de représenter le travail du compilo s'il doit "dérécursiviser" du code. D'ailleurs, je pense que ce que j'ai mis est faux. Je n'arrive pas trop à donner l'équivalence itérative à du code récurif.

86

Moi ça me parait dément de passer le récursif en itératif!
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

87

jackiechan
a écrit : Aussi, je me demandais, est-ce GCC convertit le code récursif en itératif équivalent où non ?

Non. Si tu veux de l'itératif, code de l'itératif.
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é

88

Pour faire du récursif, il faut que ça en vaille la peine. Le récursif, c'est bien pour le quicksort, entre autres; mais il faut être *bizarre* pour faire du récursif pour calculer une factorielle, par exemple.
(jackiechan, je ne critique pas ton exemple; je donne mon avis sur le fait d'utiliser du récursif ou de l'itératif).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

89

oui, mais c'est quand même à celui qui code de choisir et non au compilo.
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

90

XDanger
a écrit : Pour faire du récursif, il faut que ça en vaille la peine.

Pourquoi il FAUT que ça en vaille la peine ?
(jackiechan, je ne critique pas ton exemple; je donne mon avis sur le fait d'utiliser du récursif ou de l'itératif).

Pas de pb, c'était juste pour expliquer ma question.
Ximoon
a écrit : oui, mais c'est quand même à celui qui code de choisir et non au compilo.

Complètement d'accord