Pour le code ci-dessous, si je veux convertir la boucle for en assembly en ligne, comment cela se fera-t-il? (Pardon le code bizarre, je viens de faire vers le haut.)Assemblage en ligne
1) Ceci est pour le x86, en utilisant Visual Studio
2) Ce "comment utiliser dans l'assemblage de la ligne" question, pas "comment optimiser ce code" question
3) Tout autre exemple sera bon. Je vais penser à un meilleur exemple de code dans ABIT.
OK J'espère que cela est un meilleur exemple:
int doSomething(double a, double b, double c)
{
double d;
for(int i=100;i<200;i++)
{
d = a*a + b*b + c*c;
if(d>i)
return (i-99);
}
return -1;
}
Avez-vous une bonne raison de le faire? Un compilateur décent fera probablement un bien meilleur travail qu'un programmeur d'assembleur noob. Et quel CPU ciblez-vous? –
Notez également que votre code a une expression redondante à l'intérieur de la boucle - la deuxième ligne est inutile car b est immédiatement remplacé par c. Vous pourriez vouloir corriger votre code avant d'essayer de l'optimiser. –
Et une autre chose - la boucle elle-même est redondante car toutes les expressions à l'intérieur sont invariantes en boucle. Vous n'avez pas vraiment réfléchi à cela, n'est-ce pas? –