1

Voilà j'ai fait une fonction pour extraire une chaîne à l'intérieur d'une autre chaîne :
char *sub_str(int begin, int end, char *str)
{
int i=0,j=0;
char *str_return = malloc((end-begin));
for(i=begin;i<end;i++)
{
str_return[j]=str[i];
j++;
}
return str_return;
}

En gros je l'utilise comme ça :
int debut = 1, fin = 10;
char *chaîne_extraite = sub_str(debut,fin, Buffer_File);
free(chaîne_extraite);

Buffer_File est une chaîne qui contient un fichier text.

... Et je ne sais pas trop si c'est correcte parce-que ça me renvoie bien la chaîne correspondante mais souvent il y a des caractères bizzare qui s'affichent à la fin qd je l'affiche avec printf(); surtout sur ma Hw2.
Enfin ça peut peut-être venir de bug à l'intérieur de mon programmes car il y en a deux trois mais je ne sais pas si ça vient de là ou pas.
www.wikio.fr/user1921&info=comments

2

ssesstr_return[j]= 0;Il faut que tu fajuste avant le return str_return;
1);Et malloc(end - begin + afin de réserver la place du zéro.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

3

Sûrement parce que tu oublies de rajouter str_return[j++]=0 après le for
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

4

Oui, d'ailleurs le ++ n'est pas nécessaire du tout triroll
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

5

Le ++ est une perte de temps et de place wink
Il ne faut pas oublier d'ajouter un octet au malloc.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

6

Ok, merci bien et pour vos conseils et votre rapidité, ça fait plaisir ! smile
Je vais essayé tout ça.
www.wikio.fr/user1921&info=comments

7

> Le ++ est une perte de temps et de place
Pas forcément, si le compilo est intelligent ça peut ne pas être le cas soit parce qu'il a compris qu'on n'a pas besoin du résultat, soit parce qu'il transforme le str_return[j++] en (a0)+ qui n'est pas plus cher que (a0).

(PS : sur ce point là GTC n'est pas intelligent tongue Bon faudrait vraiment que je me mette à la nouvelle allocation de registres...)

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

8

Pff laisse tomber, l'allocation des registres d'Azur sera bien plus efficace que la tienne tongue
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

9

Pollux :
> Le ++ est une perte de temps et de place Pas forcément, si le compilo est intelligent ça peut ne pas être le cas soit parce qu'il a compris qu'on n'a pas besoin du résultat,

Et GCC sait faire ça très bien. ("Dead Store Elimination")
(PS : sur ce point là GTC n'est pas intelligent tongue Bon faudrait vraiment que je me mette à la nouvelle allocation de registres...)

Ce n'est pas du tout un problème d'allocation de registres, il faut faire une passe de DSE.
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é

10

Mais si smile Si GTC n'alloue pas str_return dans un registre, (an)+ n'est pas généré, donc le [y++] prend plus de temps que le [y].

Un DSE résoudrait aussi le problème, mais je doute que GTC le fasse à cause de la vitesse de compilation on-calc.
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

11

Thibaut :
Mais si smile Si GTC n'alloue pas str_return dans un registre, (an)+ n'est pas généré, donc le [y++] prend plus de temps que le [y].

Le fait est que la postincrémentation est éliminable, et doit être éliminée.
Un DSE résoudrait aussi le problème, mais je doute que GTC le fasse à cause de la vitesse de compilation on-calc.

Bref, une optimisation totalement déficiente.
Les petits trucs de 3 lignes pour gagner les benchs de taille, je sais aussi les faire (cf. 3.3.1-pre18, 3.3.1-pre19). Ce n'est pas de l'optimisation avancée.
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é

12

> Le fait est que la postincrémentation est éliminable, et doit être éliminée.
Ouai, c'est ZE standard, c'est obligé, t'as raison triso

> Bref, une optimisation totalement déficiente.
Mon Dieu, comme c'est grave... C'est hyper-important comme optimisation triso
Je te rappelle au passage que GTC optimise mieux en taille que GCC, alors cette optimisation est vraiment parmi les dernières à implémenter, si on considère que GTC optimise en taille prioritairement (et pas en vitesse).

Et si tu rétorques que c'est dommage pour la vitesse, je te répond que TIGCC .95 va être pire avec ses switchs linéaires couic
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

13

Juste une remarque : dans l'exemple cité, faudrait quand même rapeller que l'utilisateur n'est pas censé être un débile profond, et s'appercevra très bien lui même que le ++ ne sert à rien...
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

Thibaut :
> Le fait est que la postincrémentation est éliminable, et doit être éliminée. Ouai, c'est ZE standard, c'est obligé,

Les optimisations ne sont pas prescrites dans le standard. (-O0 est tout aussi conforme au standard que -O3 ou -Os (sauf bogues évidemment).) Ça ne veut pas dire que ne pas les effectuer soit une bonne idée!
> Bref, une optimisation totalement déficiente. Mon Dieu, comme c'est grave... C'est hyper-important comme optimisation

Ben oui. C'est une optimisation qui améliore à la fois taille et vitesse, donc nettement plus importante que par exemple le tuning des switches pour être plus petits ou plus rapides!
Je te rappelle au passage que GTC optimise mieux en taille que GCC, alors cette optimisation est vraiment parmi les dernières à implémenter, si on considère que GTC optimise en taille prioritairement (et pas en vitesse).

As-tu lu mes 2 dernières phrases???
Kevin Kofler
: Les petits trucs de 3 lignes pour gagner les benchs de taille, je sais aussi les faire (cf. 3.3.1-pre18, 3.3.1-pre19). Ce n'est pas de l'optimisation avancée.


Et si tu rétorques que c'est dommage pour la vitesse, je te répond que TIGCC .95 va être pire avec ses switchs linéaires couic

-Os est de l'optimisation en taille! Si tu veux optimiser en vitesse, utilise -O2 ou -O3! Et dans ce cas, ne te plains pas que le code de GCC est plus gros, il ne fait que ce que tu lui demandes. C'est aussi dur que ça à comprendre?
Et vu les résultats en taille de GTools Compiler, il donne exactement la même chose à mon avis.
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é

15

Ce n'est pas du tout un problème d'allocation de registres, il faut faire une passe de DSE.

Tu ne sais pas de quoi tu parles. C'est bien un pb d'alloc de registres.

Quand à ta fameuse passe, elle est complètement inutile si ton alloc de registres est bien faite (même si on peut aussi le faire en une passe séparée triso)
Bref, une optimisation totalement déficiente. Les petits trucs de 3 lignes pour gagner les benchs de taille, je sais aussi les faire (cf. 3.3.1-pre18, 3.3.1-pre19). Ce n'est pas de l'optimisation avancée.

Ben écoute quand TIGCC sera plus efficace que GTC on en reparlera, hein? tongue
-Os est de l'optimisation en taille! Si tu veux optimiser en vitesse, utilise -O2 ou -O3! Et dans ce cas, ne te plains pas que le code de GCC est plus gros, il ne fait que ce que tu lui demandes. C'est aussi dur que ça à comprendre? Et vu les résultats en taille de GTools Compiler, il donne exactement la même chose à mon avis.

Ouf, si tu dis que GTC est pareil que TIGCC, ça veut dire que tu reconnais au fond de toi qu'il est meilleur (sinon j'aurais certainement eu droit au "techniquement inférieur" de l'époque où GTC était 1 à 2% plus gros que TIGCC grin)

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

16

> vu les résultats en taille de GTools Compiler, il donne exactement la même chose à mon avis
Tu parles de la taille ne général, ou de ce que GTC génère pour les switchs ?
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

17

En tout cas, merci : mnt je n'ai plus de plantage (même si ça plantait 1 fois sur 20) et j'ai pû bien avancé dans mon programme ! smile
www.wikio.fr/user1921&info=comments

18

Thibaut :
> vu les résultats en taille de GTools Compiler, il donne exactement la même chose à mon avis Tu parles de la taille ne général, ou de ce que GTC génère pour les switchs ?

Des switches.
Une autre raison pour laquelle ça m'étonnerait qu'il donne autre chose que du parcours linéaire est que c'est compliqué de balancer de l'arbre de décision. Mais j'attends toujours la réponse de Pollux. roll
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é

19

Des switches. Une autre raison pour laquelle ça m'étonnerait qu'il donne autre chose que du parcours linéaire est que c'est compliqué de balancer de l'arbre de décision. Mais j'attends toujours la réponse de Pollux.

Ah bon je pensais que tu parlais en général embarrassed GTC fait du linéaire, effectivement, mais il aime bien aussi utiliser une table si ça ne coûte pas trop cher smile Pour ce qui est de faire l'arbre de décision, ce n'est pas franchement compliqué (phase de RLE préliminaire éventuelle, puis tri, puis génération immédiate de l'arbre), mais je ne l'ai effectivement pas implémenté.

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

20

Pollux
: GTC fait du linéaire, effectivement,

OK. Alors Thibaut, fini les jugements à 2 vitesses?
mais il aime bien aussi utiliser une table si ça ne coûte pas trop cher smile

GCC aussi, sauf que la définition de "pas trop cher" dépend de ce pour quoi on optimise. En -Os, "pas trop cher" = "prend moins de place" = "switch très dense (densité >1/3)". En -O2/-O3, "pas trop cher" = "ne prend pas une place excessive" = "switch dense un minimum (densité >1/10)".
Pour ce qui est de faire l'arbre de décision, ce n'est pas franchement compliqué (phase de RLE préliminaire éventuelle, puis tri, puis génération immédiate de l'arbre), mais je ne l'ai effectivement pas implémenté.

GCC construit d'abord l'arbre linéaire et (sauf en -Os avec mon patch) le balance après.
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é

21

STOP.
Vous etes totalement hors sujet, arretez de polluer un topic de plus avec vos gamineries.
warau kado niha fuku kitaru.

#trifouet#!!!

22

si même solid le dit gni

23

Par contre j'ai identifié le dernier gros plantage qui me reste et là je vais encore avoir besoin d'aide.
J'ai une fonction qui charge les fichiers text mais comme je veux faire un format spécial qui puisse s'éditer avec l'éditeur de texte de la Ti, j'ai décidé de mettre un "tag" au début des fichiers pour les repérer.
Donc mon programme ouvrent TOUS les fichiers du répertoire main pour regarder les premières lignes. Mais apparement qd il y a un seul fichier archivé, preos renvoie le message "crash intercepted" en quittant le programme et du coup la mémoire allouée par le programme est perdue.
Il y a un moyen de remédier à ça ?! Car sans preos, il;n'y a pas de pb particulier.
www.wikio.fr/user1921&info=comments

24

solid :
STOP. Vous etes totalement hors sujet, arretez de polluer un topic de plus avec vos gamineries.

Gamineries??? Ce sont des discussions techniques très intéressantes au sujet de la réalisation interne d'un compilateur, pas des gamineries!

Je suspecte que tu es jaloux parce que tu n'arrives pas à suivre. grin
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é

25

Gamineries??? Ce sont des discussions techniques très intéressantes au sujet de la réalisation interne d'un compilateur, pas des gamineries!
A côté de la plaque...
avatar
Le scénario de notre univers a été rédigée par un bataillon de singes savants. Tout s'explique enfin.
T'as un problème ? Tu veux un bonbon ?
[CrystalMPQ] C# MPQ Library/Tools - [CrystalBoy] C# GB Emulator - [Monoxide] C# OSX library - M68k Opcodes

26

Kevin Kofler :
Je suspecte que tu es jaloux parce que tu n'arrives pas à suivre. grin

Cela dit il a raison : vous êtes HS.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

27

Je ne suis pas jaloux, je comprend parfaitement vos propos, c'est juste qu'ils sont totalement HS, je ne vois absolument aucun rapport avec les posts de l'auteur.
warau kado niha fuku kitaru.

#trifouet#!!!