Мне нужно запустить этот простой встроенный код сборки:
#include <stdio.h>
int count;
int main() {
count = 0;
for (int i = 0; i < 10; i++) {
asm volatile ("incl count"); // count++
}
printf("count=%d\n", count);
return 0;
}
Он работает нормально (количество печати = 10), пока я не включу оптимизацию (gcc -O1), и в этом случае он печатает число = 0. Я читал, что квалификатор volatile не позволит оптимизатору вывести код из цикла. Но это, кажется, не имеет никакого эффекта здесь.