Speicheradressen vorberechnet?



  • Hallo zusammen,
    ich hab mir nach langer Zeit mal wieder ein Asm-Tutorial angeschaut,
    und frage mich, wie z.B. folgende Zeile übersetzt wird (NASM):
    mov eax, [ebp-4]

    Wie wird dieses [ebp-4] berechnet ohne register zu besetzen oder ebp zu verändern?
    Der Assembler kann doch den Wert von ebp und damit ebp-4 zum build-zeitpunkt nicht kennen / vorausberechnen!

    Und wieso geht dann mov eax, ebp-4 nicht?
    bzw. wie funktioniert lea eax, [ebp-4] ?



  • mov eax, [ebp-4]

    Schau dir doch einfach mal den Opcode an. 🙂
    Beim mov-Befehl (und vielen anderen), kann man bei der Ziel-Adresse ein Offset mitangeben. Dieses Offset, in deinem Fall -4, steht im Binärcode. Das berechnet die CPU.


Anmelden zum Antworten