-
-
Erfahrener Benutzer
Roboter Genie
Du kannst nicht nur, sondern du MUSST das goto weglassen. Grund ist folgender:
Bei einem Sprung zu einer Unterroutine mit call oder gosub, merkt sich der controller die adresse, von der er kam, um danach an dieser stelle weiterarbeiten zu können.
Er packt diese Adresse (2 Bytes) auf einen stapel und merkt sich, das dieser stapel wieder 2 bytes "höher" geworden ist.
ist das unterprogramm beendet, so nimmt der controller einfach die beiden obersten bytes vom stapel und weiß nun, wo er weiterzumachen hat und das der stapel nun wieder 2 bytes weniger hoch ist.
springst du nun aber mit "goto" aus dem sub wieder ins hauptprogramm, so legt jeder aufruf des unterprogramms 2 bytes auf den stapel, die niemals wieder heruntergenommen werden. das ergibt dann irgendwann einen stapelüberlauf.
Ach ja ... und subs werden nicht mit gosub aufgerufen, sondern wenn, dann mit "call".
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen