У меня есть ассемблерный код, который в 100 раз превосходит эти две инструкции:
movl %eax, -16(%rbp)
movl -12(%rbp), %eax
, который соответствует этому циклу кода c:
int i;
int a=5, b;
for (i=0 ; i < sptr->numberOfIterations ; i += 100){
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;
b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a;b=a; // 100 assignments
}
Почему операция b = a;перейти к двум инструкциям?и как получается, что я рассчитываю, сколько циклов (каждый b=a;
) занимает один цикл?
Я скомпилировал его с g++