207Fermer209
Kevin KoflerLe 12/10/2007 à 21:13
Martial Demolins (./206) :
Ya un label entre les deux cheeky

Effectivement, ce serait incorrect de virer le tst là. smile
Et puis de toute façon, la future bêta 9 ne génère pas ça (il n'y a pas ce label et donc pas le tst incriminé non plus), donc il n'a rien à corriger. tongue
Martial Demolins (./207) :
__main:
	move.w #18,-(%sp)
	pea .LC0
	jbsr fast_and_perfect_hash
	addq.l #6,%sp
	rts
Quel intérêt de faire ça? Pourquoi empiler puis faire un saut pour s'empresser de dépiler à l'arrivée? Pourquoi pas mettre __main au début de la fonction principale et renseigner directment les registres?

Parce que c'est la convention d'appel.

Si on met static à de la fonction, elle sera automatiquement inlinée (même en -Os, étant donné qu'elle est appelée exactement une fois), ce qui fait essentiellement ce que tu proposes. (Mais dans ce cas, la fonction sera totalement éliminée vu qu'elle n'a pas d'effets collatéraux. grin C'est bien pour ça que je dis de toujours tester avec des entrées utilisateur et afficher le résultat!) Mais si elle n'est pas static, GCC ne peut pas savoir qu'il n'y a pas un autre fichier .c qui veut appeler la fonction! C'est bien pour ça que je dis de toujours mettre static pour les fonctions ou variables globales qui ne sont pas utilisées dans un autre .c. Même s'il y en a un seul! (GCC ne peut pas savoir.)