Kevin Kofler (./178) :Pen^2 (./168) :
je savais que "register" n'était qu'une suggestion à cause de la portabilité (pas forcément assez de registres dispos sur la plateforme) mais c'est quand même dommage de l'ignorer volontairement (le coup du standard, c'était qu'une boutade)
L'allocateur de registres sait mieux que toi quand il faut utiliser un registre et quand il ne faut pas.

Pour ton "_ti68k", ça s'appelle __TIGCC_ENV__.

Kevin Kofler (./180) :
Et addq.l #1,%an et addq.w #1,%an reviennent exactement au même. Même taille, même nombre de cycles, même effet.
(mais c'est juste par curiosité)))

Par contre j'ai du anonymer Pollux, il voulait pas (trop modeste peut-être
)Kevin Kofler (./178) :Ben voyons
L'allocateur de registres sait mieux que toi quand il faut utiliser un registre et quand il ne faut pas.
Depuis le début tu racontes plus ou moins n'importe quoi ici, alors arrête un peu. Si encore tu étais aimable, ça serait pas gênant.

Thibaut (./159) :
// generates very uniform hash tables even with non prime modulos
donc c'est un hash rapide, OK, mais d'assez mauvaise qualité -- c'est vrai qu'avec tes données, c'est pas un problème d'utiliser un hash de mauvaise qualité (la preuve, même le hash tout con est aussi efficace qu'un hash idéal), mais ça n'en fait pas pour autant un hash "very uniform" 
Pen^2 (./190) :
sinon je reviens sur l'histoire du ">=0" : c'est pas mieux de laisser ">0", ie remplacer par "!=0", vu la décrémentation par pas de 1 ?
normalement on peut espérer qu'un test d'égalité à 0 est plus rapide qu'une comparaison (genre un subq et derrière un beq.s pour le 68k)
Kevin Kofler (./178) :En effet, c'est une excellente idée de la part de TIGCC d'ignorer mes directives register. Je viens de vérifier le .s...
L'allocateur de registres sait mieux que toi quand il faut utiliser un registre et quand il ne faut pas.


Thibaut (./194) :Kevin Kofler (./178) :En effet, c'est une excellente idée de la part de TIGCC d'ignorer mes directives register. Je viens de vérifier le .s...Monsieur TIGCC travaille uniquement sur la pile dans la boucle !
L'allocateur de registres sait mieux que toi quand il faut utiliser un registre et quand il ne faut pas.
Thibaut (./196) :
Bon, y'a du mieux avec -Os.

C'est quand même dingue que même sans optimisation (pas de -Ox) GCC ne prenne pas en compte les register si on le demande.
(d'autant plus que TIGCC produit un div dans le code
)Thibaut (./201) :
Surtout quand il n'optimise pas

subq.w #1,d4 tst.w d4 bgt .L4
(d'autant plus que TIGCC produit un div dans le code)
)). Ou les deux.
subq.w #1,%d4 jbpl .L3
Fichier joint : hash_c.sMartial Demolins (./206) :
Ya un label entre les deux


Martial Demolins (./207) :__main: move.w #18,-(%sp) pea .LC0 jbsr fast_and_perfect_hash addq.l #6,%sp rtsQuel 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?
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.)
Encore une fois, c'était pour voir la gueule de l'ASM généré et l'allocation des registres.