Habe mich durch das Thema "Aufruf von C-Funktionen" vor allem bezueglich stack aus Sicht von caller und callee gearbeitet. Soweit alles klar.
Dazu noch folgende Fragen:
- ENTER / LEAVE vorteilhaft gegenueber mov .../pop ...? (unterschiedliche Handhabung in den Compilern? Mein DJGPP verwendet letzteres)
- Warum speichert caller - falls notwendig - EAX, ECX, EDX?
- Warum speichert callee - falls notwendig - EBX, ESI, EDI?
- Wozu verwendet der callee den Bereich "temporary storage" (neben local variables)? Konkretes Beispiel?
- Ist "pop eip" gleich "ret"?
- Ist "push eip" plus "jmp foo" gleich "call foo"?
Wenn nein, warum nicht? Gibt es eine Aequivalenz?
Dazu noch folgende Fragen:
- ENTER / LEAVE vorteilhaft gegenueber mov .../pop ...? (unterschiedliche Handhabung in den Compilern? Mein DJGPP verwendet letzteres)
- Warum speichert caller - falls notwendig - EAX, ECX, EDX?
- Warum speichert callee - falls notwendig - EBX, ESI, EDI?
- Wozu verwendet der callee den Bereich "temporary storage" (neben local variables)? Konkretes Beispiel?
- Ist "pop eip" gleich "ret"?
- Ist "push eip" plus "jmp foo" gleich "call foo"?
Wenn nein, warum nicht? Gibt es eine Aequivalenz?

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken
Gespeichert



