Displacement-Berechung
-
Ich beschäftige mich gerade mit Pentium-optimierter Programmierung, aber mir ist beim Thema Adress Generate Interlock aufgefallen, das beim Begünstigen des Pairings immer mit Adress Displacement gearbeitet wird. Nun ist mir aber nicht ganz klar, wie sich der Displacement-Wert berechnet.
add ebx, 2 mov eax, [edi] add ecx, 4 mov [ebx], eax
wird zu
mov eax, [edi] add ecx, 4 mov [ebx + 2], eax add ebx, 2
Woher weiss ich, das es in der dritten Zeile +2 sein muss? Hab noch ein zweites Beispiel:
loop: add ecx, 4 mov [ecx], eax inc eax cmp eax, 100 jl loop
wird optimiert zu:
loop: mov [ecx + 4], eax inc eax add ecx, 4 cmp eax, 100 jl loop
Habe keine Ahnung, wie diese Zahlen zustande kommen.
zwette