Explicação da otimização do gcc
Fora da curiosidade dos hackers, eu me pergunto comogcc
pode conseguir otimizar a função abaixo disso de forma inteligente?
int c() {
int i, j = 0;
for (i = 0; i < 10; i++) {
j += i;
}
return j;
}
$objdump -D c.o
abaixo é para o braço, mas o x86 não é diferente na lógica.
00000000 <c>:
0: 202d movs r0, #45 ; 0x2d
2: 4770 bx lr
Eu principalmente me pergunto se isso é resultado de uma cadeia de otimizações ou algo como uma correspondência de modelo? Existe alguma documentação sobre essas otimizações?