Собственно, в этом примере:
void main () {
short int a[5]={12,15,1,17,248};
short int i=0;
short int b=17;
for (;i<(sizeof a/sizeof *a);i++) {
if (a[i]==b) printf("Hello, %d\n",i);
}
}
GCC упорно не хочет генерировать из этого самый простой и логичный в данном случае машинный код -
repne scasw
Генерируется вместо этого цикл с явным cmp.
Почему и как сделать так, чтобы GCC вспомнил о существовании scas с префиксом repne (повторять пока не установлен zero flag) при поиске по массиву?
Спасибо!