Ich habe gerade angefangen mit ASM zu basteln und ich bin mir nicht sicher, ob mein Verständnis von Prozeduraufrufen korrekt ist.Wie funktionieren Prozeduraufrufe in Assembler?
irgendwann sagen, im Code gibt es einen Prozeduraufruf
call dword ptr[123]
und das Verfahren besteht aus nur einem Befehl, ret:
ret 0004
was die Wirkung dieser Prozeduraufruf wäre und wo würde der Rückgabewert gespeichert? Ich habe irgendwo gelesen, dass ein Rückgabewert von 2 Bytes würde in AX gespeichert werden, aber wenn ich den Prozeduraufruf ersetzen durch
mov AX, 0004
(zusammen mit den notwendigen NOPs) das Programm abstürzt.
danke! die meisten der Tutorials, die ich gegoogelt habe, benutzten nur ret und erklärten nicht die Operation sofort. Ich wurde weiter verwirrt, als der LLVM-Assembler anscheinend einen "ret" Befehl hatte. –
int3
Gibt es einen Grund, warum RET zu einem anderen Ort als dem Aufrufer zurückkehren kann? Ich habe gerade eine Frage erstellt und diese in verwandten Fragen gefunden – lisovaccaro
ja, wenn Sie die Absenderadresse manipuliert, die 'CALL' auf den Stapel geschoben. –