RiRi Le 30/10/2006 à 16:32 Je comprend pas, lorsque je remplace y*30 par (y<<5) - (y<<1) je perd en vitese.
Je compile avec -O3.
Y a-t-il quelque chose que je ne fais pas correctement?
RiRi Le 30/10/2006 à 16:56 Voilà le code ASM obtenu:
dans la fonction affiche pixel, j'ai y*30 et dans la fonction inversepixel, j'ai la 2° solution.
AffichePixel:
move.w 8(%sp),%d2
move.w 10(%sp),%d0
move.w %d0,%d1
lsl.w #5,%d1
add.w %d0,%d0
sub.w %d0,%d1
move.w %d1,%a0
add.l 4(%sp),%a0
move.w %d2,%d0
asr.w #3,%d0
lea (%a0,%d0.w),%a0
not.w %d2
and.w #-32761,%d2
jbge .L2
subq.w #1,%d2
or.w #-8,%d2
addq.w #1,%d2
.L2:
#APP
bset.b %d2,(%a0)
#NO_APP
rts
.section .text.InversePixel,"x"
.even
.globl InversePixel
InversePixel:
move.w 8(%sp),%d2
move.w 10(%sp),%d0
move.w %d0,%d1
lsl.w #5,%d1
move.w %d1,%a0
add.l 4(%sp),%a0
add.w %d0,%d0
sub.w %d0,%a0
move.w %d2,%d0
asr.w #3,%d0
lea (%a0,%d0.w),%a0
and.w #-32761,%d2
jbge .L7
subq.w #1,%d2
or.w #-8,%d2
addq.w #1,%d2
RiRi Le 30/10/2006 à 17:24 Oui en fait l'optimisation est faite automatiquement apparemment, parceque la code de affiche pixel correspond à y<<5-y<<2, alors que dans le source C j'avais y*30.
Par contre c'est quend même bizard que lorsqu'on l'explicite en C il ne soit pas capable de le retrancrire correctement en ASM.
RiRi Le 30/10/2006 à 17:26 autre question, peut-on préciser les options de compilation pour un fichier donné lors de la compilation d'un projet?
il est déclaré comment "y" ?

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa 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.
Essaie en unsigned short.

Que cache le pays des Dieux ? -
Forum Ghibli -
Forum LittéraireLa 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.
RiRi Le 30/10/2006 à 18:16 nan ça n'améliore pas
mais bon en regardant le code asm, l'optimisation est directement faite sans avoir à l'écrir en C
mouais, ben c'est le genre de choses qui arrivent, surtout avec un compilo comme gcc qui a des tonnes et des tonnes de passes empilées les unes au-dessus des autres...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Ok, désolé d'avoir réveillé un Zombie (mais le moteur de recherche est un peu moisi ou était défaillant ce jour là, j'avais tapé "pixel" et j'avais rien trouvé il me semble.)
... Donc si je comprend bien, je dois de toute façon passer par (et donc apprendre) l'assembleur. J'vais peut-être m'y mettre alors.