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.