Salut,
Un petit jeu pour ceux qui aiment se remuer les méninges : écrire une fonction qui rend la valeur absolue d’un entier 32 bits sans utiliser aucun saut.
À vous de jouer !
« 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
. »
function abs(x) {
x = x * x
return sqrt(x)
}
[code] move.l d0, d1
rol.l #1, d1
and.l #1, d1
neg.l d1
eor.l d1, d0
sub.l d1, d0[/code]
Variation perso. Mais je sais pas si ça prend moins de cycles que la version de Kevin.
—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT TurboTa version prend plus de place en tout cas!
Oui, c'est vrai. On peut faire :
[code] moveq.l #1, d2
move.l d0, d1
rol.l d2, d1
and.l d2, d1
neg.l d1
eor.l d1, d0
sub.l d1, d0[/code]
mais ça prend 2 octets de plus que ta version.
—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT TurboSur 68000 ça vaudrait le coup de comparer les deux solutions, c'est pas sûr qu'on soit gagnant en effet.
Mais sur les processeurs plus évolués avec un long pipeline, vaut mieux en général éviter les sauts si on peut faire autrement : un saut peut faire perdre beaucoup de cycles, le temps que le pipeline soit rechargé.
—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT Turbo vince 2009-10-14 at 11:37am ça fait super longtemps que j'ai pas touché au 68000 donc j'ai un doute sur le format des entiers signés 32bits mais si c'est le msb qui sert pour stocker le signe, il suffit de le masquer, non ? (à moins que le valeurs négatives soient en complément à deux)
oui, c'est le msb, et les valeurs négatives sont en complément à deux
Je déconseille fortement le Zguide, c'est vraiment catastrophique. (Je me rappelle toujours quand j'ai essayé d'apprendre avec cette horreur il y a quelques années, c'était totalement impossible.)
Ben j'ai appris avec, entre autres et comme d'autres (Pen2 ?). Il était bordélique mais c'etait le seul document en français avec la traduction d'un cours américain assez pointu. Les deux se complétaient.
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.