RUFEN Sie die Funktion in der Montage
Ich habe eine Frage zu einem CALL
Funktion in Assembler-code. Ist es richtig, wenn ich führen Sie eine Funktion AUFRUFEN, die in der Montage, dass die Anweisung auf dem Stapel?
Wann ist der Unterricht knallte zurück, als ich CALL
eine Funktion?
CALL
ist keine Funktion, es ist eine einzelne Anweisung für den CPU zu führen. Abhängig von der Architektur (x86, PPC, ARM, ...) und Aufruf-Konvention, die Dinge anders implementiert sind. Bitte konsultieren Sie das Handbuch für die hardware, die Sie Programmieren oder geben Sie uns hier weitere Informationen.- Mögliche Duplikate von wie finde procedure calls arbeiten in assembler?, stackoverflow.com/questions/33685146/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Antwort geht davon Intel x86-Architektur.
Nicht. Was wird auf dem Stapel abgelegt wird, wird der Wert des instruction pointer, die damals-Punkte, um die Anweisung nach der
CALL
Unterricht.In der Regel, wenn Sie führen Sie eine
RET
Unterricht.Weitere Informationen finden Sie auf der x86-Aufrufkonventionen, und der Intel x86-instruction manual.
esp
.esp
tag. Op sollte genauer sein.Auf x86-und x86/64-bit-call-push in den stack-Adresse der nächsten Anweisung.
Beispiel:
In diesem moment oben auf dem Stapel haben Sie die Adresse dieser Zeichenfolge - es ist ein netter trick. Wahrscheinlich in diesem moment, den Sie nie verwenden ret für Sprung zur ersten Anweisung nach dem Aufruf.