Je suis très nouveau dans l'assemblage et je veux trouver tous les triplets pythagoriciens dans une gamme de 1 à 100. Je suis en train de générer tous les nombres en C et tous les autres calculs devraient être faits dans l'assemblage SSE. J'essayais de le faire en utilisant la commande sqrt (j'ai essayé tous) mais je ne pouvais pas le faire fonctionner .. Quelqu'un peut-il me dire comment cela devrait être fait?Comment trouver des triplets pythagoriciens en utilisant les instructions de montage SSE?
C'est ce que j'ai jusqu'à présent:
int main(){
for (int i = 1; i <= 100; i++)
{
a++;
if (a > 100)
a = 0;
for (int j = 1; j <= 100; j++)
{
b++;
if (b > 100)
b = a;
_asm //tricky part begins here:
{
movups xmm0, a
movups xmm1, b
pmuludq xmm0, xmm0
pmuludq xmm1, xmm1
//movups xmm2, 0
//paddd xmm2, xmm0
//paddd xmm2, xmm1
movups z, xmm0
}
printf("%d\n", z);
}
}
}
"Je veux faire cela en assemblage car je sais que c'est plus rapide que C." Comment sais-tu ça? Parce que ça ne sera probablement pas le cas. –
Je ne suppose pas que votre asm écrit à la main sera plus rapide qu'une sortie du compilateur C. Les compilateurs sont intelligents, les processeurs modernes sont complexes. – Blorgbeard
Notez votre algorithme en C ou en pseudocode en premier. – Jester