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


Anmelden zum Antworten