Mais c'est encore mieux que ce que je pensais ton truc ... Bon courage pour la fin ...
Thibaut> c'est bien le type d'expressions que tu aimes, non ?
(lol lol lol)
LhA Le 09/02/2002 à 13:27 escusez mon ignorence mais AZUR = ????
Des joueurs de brood war ici? /w TIman[sL] [br] L’abondance de paroles inutiles est un symptôme certain d’infériorité mentale.
niuob Le 09/02/2002 à 13:31 Vas voir le lien de la signature à Thibaut.
OK.
je v me mettre à en rédiger un ou deux de plus ce soir...
Kevin : Y'a une bêta de TIGCC qui passe les params par registre ?
Mais c'est quoi l'intérêt de passer des params par registres, puisqu'il faut les sauver sur la pile quand on doit les utiliser pour appeler une fonction... ?

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.
>Y'a une bêta de TIGCC qui passe les params par registre ?
J'ai adapté le patch pour le passage par registres pour GCC 2.95 à GCC 3.0.2, et Sebastian va probablement le mettre dans les versions futures de TIGCC.
>Mais c'est quoi l'intérêt de passer des params par registres, puisqu'il faut les sauver sur la pile quand on doit les utiliser pour appeler une fonction... ?
Pas si ce sont d0-d2/a0-a1 (qui seront détruits de toute façon).
Et le passage par registres ne sera pas automatique (du moins pas dans la première version). Il faudra spécifier les registres explicitement, ou utiliser __attribute__ ((regparm)) dans les déclarations de fonctions, ou encore utiliser le switch -mregparm (mais il faudra que les headers soient adaptés pour que ça marche avec les ROM_CALLs - on devra préciser __attribute__ ((stkparm)) dans chaque déclaration de ROM_CALL).
[edit]Edité par Kevin Kofler le 10-02-2002 à 22:46:40[/edit]
arf...
Le passage par registres devrait permettre de gagner en rapidité...
Ils seront difficilement rendus automatiques, puisqu'il faudra réécrire toute la bibliothèque de TIGCC.
D'accord, c'est d0-d2/a0/a1 qui sont détruits, mais ce que je veux dire c'est, pour illustrer :
- Ma fonction Fonction1 qui a pour paramètres Param1 et Param2, appelle à un moment une fonction quelconque qui demande aussi des paramètres. Param1 et Param2 vont être réutilisés après cet appel.
- Les paramètres Param1 et Param2 doivent donc être sauvés sur la pile.
- Résultat : perte de temps par rapport à la convention de passage normale où les paramètres, passés sur la pile, n'auraient pas à être sauvés.
[edit]Edité par Thibaut le 10-02-2002 à 22:56:09[/edit]

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.
la majorité des fonctions de TIGCC sont des ROM_CALLS => ça ne s'appliquera pas là, je penses...
Mais ça sera sans nul doute utile pour des librairies graphiques, et autres
>Ils seront difficilement rendus automatiques, puisqu'il faudra réécrire toute la bibliothèque de TIGCC.
Il suffit de mettre __attribute__ ((stkparm)) pour les fonctions existantes.
Et le passage par registres ne sera activé par défaut que s'il réduit vraiment la taille des exécutables. (Désolé, j'ai l'habitude de mesurer l'optimisation par la taille plutôt que par la vitesse, et je pense que c'est la même chose pour Sebastian. La taille est visible sans avoir à lancer le fichier, donc beaucoup plus facile à mesurer.)
Et s'il est activé par défaut et qu'il ne te plaît pas, il sera désactivable (si on le met dans l'IDE, il suffit de le supprimer, et si on l'active directement dans GCC, il y a le switch -mno-regparm pour le désactiver).
Sinon, avec spécification explicite des registres, le passage par registres aura 2 usages:
- des fonctions en assembleur où on s'épargne clairement de prendre un paramètre de la pile (j'en ai déjà postée une comme ça sur le forum)
- les fonctions de certaines librairies dynamiques existantes
[edit]Edité par Kevin Kofler le 10-02-2002 à 23:08:56[/edit]

Pour diminuer la taile des exécutables, plutôt que de ralentir en proposant un passage foireux, commencez par optimiser la librairie, par exemple en faisant des copier-collers de la bibliothèque Azur 1 mois et demi après sa sortie...

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.
À priori, si ça ralentit vraiment, ça fera aussi perdre en place (parce qu'il y aura des instructions en plus) et vice-versa.
Et puis:
- Le patch est déjà prêt.
- Ce ne sera (très probablement) pas activé par défaut.
- J'ai fait ça pour que PpHd arrête de râler toutes le 2 semaines qu'il manque le passage par registres.
- Ça sera en tout cas désactivable.
- On pourra combiner passage par pile et passage par registres! Soit avec spécification explicite des registres, soit avec des __attribute__.
Au fait, pour Azur, je prévoyais le support de l'appel des fonctions pour cette semaine. Eh bien en fait je vais prendre du retard !
En effet, grâce à Kevin, je vais pouvoir abandonner le projet Azur.
PS : squale92 : pourquoi tu n'utilise pas CC ?

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.