Hi,
Gibt eine Prozedur immer 0 zurück, wenn sie auf "natürlichem Wege" verlassen wird? Ich habe gehört, das Prozeduren den aktuellen Stack-Wert zurückgeben können, angeblich nur wenn ich procedurereturn ohne eine variable schreibe...
Also nochmal zusammengefasst. So weit mir bekannt, gibt es 3 Wege eine prozedur zu verlassen:
1) Das 'EndProcedure' wird erreicht - Prozedur gibt 0 zurück
2) Verlassen mit 'ProcedureReturn' - Aktueller Stack wird zurückgegeben
3) Verlassen mit 'ProcedureReturn variable' - Der Inhalt der Variable wird zurückgegeben
Sind meine Annahmen, was den Rückgabewert angeht, richtig?
Rückgabewerte bei Prozeduren
Re: Rückgabewerte bei Prozeduren
Bei diesem Punkt wird das Register EAX zurückgegeben wennLebostein hat geschrieben:2) Verlassen mit 'ProcedureReturn' - Aktueller Stack wird zurückgegeben
die Prozedur Long zurückgibt.
Code: Alles auswählen
Procedure xyz()
!MOV dword EAX, 0AABBCCDDh
ProcedureReturn
EndProcedure
Debug Hex(xyz())
Floats werden bei normalen Prozeduren über den FPU-Stack
zurückgegeben, bei DLL-Prozeduren auch über EAX.
Mach am besten mal ein paar solche Prozeduren auch schau
Dir dann den ASM-Source an (Compilerargument /COMMENTED).
Beachte auch das dies Betriebssystem- und Prozessorabhängig ist
(68000 != x86 != AMD64 != IA64 != Mac).
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck