Gcc generuje ne uplne dobry kod. Typicky pripad, ktery gcc nezvladne zoptimalizovat je, kdyz mate ve funkci rychlou casto pouzivanou cestu, ktere staci k vykonani registry, ktere neni treba ukladat (eax, ecx, edx) a druhou pomalou malo pouzivanou cestu, ktera potrebuje spoustu mista na zasobniku a vsechny registry. Gcc da alokaci mista zasobniku a ukladani registru na zacatek funkce pred obe cesty, ne jen do te pomale, jak by to bylo lepsi.
Quake se zrychlil pry 2x, kdyz se prepsaly nejdulezitejsi funkce v assembleru.
Rucne schedulovat instrukce neni problem --- pro Pentium a Pentium 2 jsou ta pravidla jednoducha. Pro Pentium 4 trochu slozitejsi (a ne tak ucinna), ale ne o moc.
Názor k článku
Programujeme v jazyce Assembler v Linuxu: Úvod
Mikulas Patocka (neregistrovaný)
2. 7. 2004 3:33

