Codeoptimierung
Aus Lowlevel
Durch die Optimierung des Quellcodes eines Programms kann dieses schneller, effektiver und platzsparender arbeiten.
Inhaltsverzeichnis
Allgemeines
Datengrößen
Die Wortgröße des Prozessors zu verwenden ist oft besser als dies nicht zu tun (32 Bit bei i386, 64 Bit bei x86-64).
Alignment
Assembler
Reduzierung der Codegröße
Die nachfolgenden Tricks eignen sich besonders zum Programmieren in Assembler, wie es z. B. im Bootloader nötig ist.
| Beschreibung | Optimierter Code |
|---|---|
| Register 0 setzen | <asm>xor eax, eax</asm> |
| Prüfen, ob Register 0 ist | <asm>test eax, eax
jz ...</asm> |
| Multiplikation mit einer Zweierpotenz | <asm>shl eax, log2Faktor</asm> |
| Division durch eine Zweierpotenz | <asm>shr eax, log2Divisor</asm> |
| Beliebige Multiplikation | <asm>imul eax, [Faktor_1], [Faktor_2]</asm> |
| Schleife | <asm>mov ecx, [Anzahl_Wiederholungen]
von_vorn:
loop von_vorn</asm> |
Steigerung der Effektivität
PUSHA / POPA
Ist es schneller jedes Register einzeln zu pushen, oder besser pusha?
Hochsprachen
Optimierungstools
TODO