Wenn ich Zahlen auf den Stack pushe
Code: Alles auswählen
pushl $1337
pushl $4223
Code: Alles auswählen
movl 8(%ebp), %eax
movl %eax, 0(%esp)
movl 12(%ebp), %eax
movl %eax, 4(%esp)
pushe ich jedoch Register oder Offsets anstelle der Zahlen, dann kann ich diese nicht mit dieser Methode wiederbekommen:
Code: Alles auswählen
pushl 0(%esp) # 23
pushl 4(%esp) # 42
Was kommt da durcheinander? Darf ich keine Register/Offsets Funktions übergreifend auf den Stack packen?
Nachtrag:
Nur zum besseren Verständnis, wir reden von bspw. solchen Funktionen:
Code: Alles auswählen
.globl _add
_add:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
# Begin Parameters
movl 8(%ebp), %eax
movl %eax, 0(%esp)
movl 12(%ebp), %eax
movl %eax, 4(%esp)
# End Parameters
# ...
Ändere ich den Zugriff auf den zweiten Parameter ab, so dass ich als Offset 20 statt 12 benutzt, klappt es (in diesem Fall):
Code: Alles auswählen
movl 20(%ebp), %eax

Edit:
Ups völlig falsches Forum.. Kann das jemand verschieben?
