Wyjaśnienie optymalizacji gcc
Z ciekawości hakera zastanawiam się, jakgcc
potrafi inteligentnie zoptymalizować poniższą funkcję?
int c() {
int i, j = 0;
for (i = 0; i < 10; i++) {
j += i;
}
return j;
}
$objdump -D c.o
poniżej jest dla ramienia, ale x86 nie różni się w logice.
00000000 <c>:
0: 202d movs r0, #45 ; 0x2d
2: 4770 bx lr
Zastanawiam się głównie, czy jest to wynik łańcucha optymalizacji lub coś w rodzaju dopasowania szablonu? Czy jest jakaś dokumentacja dotycząca takich optymalizacji?