Optymalizacja rozmiaru kodu
Używaj krótszych stałych i adresów

Często aby zapisać stałą albo przesunięcie wystarcza jeden bajt. Dlatego jeżeli to możliwe dobrze jest używać bliskich skoków.

Użycie wskaźnika i jednobajtowego przesunięcia zamiast adresu.

mov ebx, [mem1] ; 6b
add ebx, [mem2] ; 6b
mov eax, offset mem1      ; 5b
mov ebx, [eax]            ; 2b
add ebx, [eax+(mem2-mem1)]; 3b

Wiekszość instrukcji ze stałymi z zakresu od -128 do 127 są krótsze. Stałe są rozszerzane bitem znaku.

push 200      ; 5b
push 100      ; 2b
 
add ebx, 128  ; 6b
add ebx, -128 ; 3b

Krótsze wersje dla inicjowania rejestru stałą

mov eax, 0               ; 5b
sub eax, eax             ; 2b 
 
mov eax, 1               ; 5 b
sub eax, eax / inc eax   ; 3 b
push 1 / pop eax         ; 3 b
 
mov eax, -1              ; 5 b
or eax, -1               ; 3 b


Tomasz Kapela, Kraków 2011-2020