PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : goto von Irgendwo nach überall erlaubt?



mabuhay
18.12.2005, 18:03
Ich habe eine Frage, und zwar betreffend von "goto". Ist es absolut egal, wo mann mit goto hinspringt? Also wenn ich zum beispiel mit call ein Unterprogramm aufrufe und aus diesem nicht mit return zurückkehre, sondern per goto sonstwohin springe. Dann ist die Adresse, welche beim Ausführen von call in den Stack gelegt wurde, ja immer noch dort -> Nach mehrmaligem durchlauf überlauf des Stack?



main
call test
goto main
; --------------------
test
goto main
return
; -------------------
end

kalledom
18.12.2005, 18:15
Ein CALL muß immer mit einem RETURN beendet werden; Du darfst nicht in eine Subroutine "reinspringen", da mit RETURN eine Rücksprungadresse vom Stack geladen wird. Und wenn da keine ist ?
Genau so solltest Du aus einer Subroutine nicht mit GOTO "verschwinden", weil bei dem CALL die Rücksprungadresse auf dem Stack abgelegt wurde; wenn Du das mehrmals machst, ist der Stack bald übergelaufen.
Das gilt natürlich für die Interrupt-Routinen ganz besonders !!!

mabuhay
18.12.2005, 18:17
vielen dank

mfg