Wie viele Verschachtelte IF abfragen kann PB ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag von Sylvia »

>>Sylvia: 1) Kiffi hat recht

Stimmt nach wie vor


>>Sylvia: 2) Unbegrenzt

Ja und Nein. Habe mir noch mal Gedanken über das Problem
gemacht. Rein vom Assembler-Output bleibt es bei unbegrenzt.
Hier gibt es keinerlei begründete Begrenzung. Sprung bleibt
Sprung. Kein Ram (=Stack) Bedarf.

Anderst sieht es aus, beim eigentlichen Vorgang der
Kompilation. Sobald der Compiler einen Sprung errechnen muss,
kann er das ja nur, wenn er weiss, wohin. Dieses Wissen
erlangt er aber erst (bei 1-Pass-Compiler), wenn er weiter
voran gekommen ist. Also, erstmal die Sprungberechnung
aufschieben und irgendwo (in einem Array/Memoryblock o.dgl.)
merken. Da diese Ablage (logischerweise) irgendwo limitiert
ist, kann bei entsprechender Verschachtelungstiefe ein
Überlauf/Begrenzung auftreten.

Wenn ihr schon experimentell (weiss nicht mehr, wer es war)
diese Begrenzung festgestellt habt, bestätigt es nur meine
Aussage. Dieses Limit gilt dann übrigens nicht nur für
verschachtelte If's, sondern auch für alle
Schleifenkörperbildungen (For/Next, While/Wend usw), auch
Goto's (!), Gosubs...all die Anweisungen, die "Vorausblick"
(=Sprünge nach vorn) vom Compiler verlangen. Und zwar alle
zusammengenommen. Soll heissen: Wenn die Grenze bei 200
liegt, dürfen bspw. 100 verschachtelte If's und 100 offene
Schleifenkörper auftreten, dann ist aus. Sprünge zurück
sind kein Problem, die Adressen kennt er ja schon.

Bei einem 2-Pass Compiler tritt diese Begrenzung nicht auf.
Der weiss wann wohin gesprungen werden muss.

Diese Begrenzung kann, wenn jemand tatsächlich dadurch an
Grenzen stösst, bestimmt ohne grossen Aufwand von Fred
geändert werden. Kein Grund zur Aufregung. Er musste sich
bei der Compilerentwicklung eben irgendwo festlegen. Kann
ja sein, das irgendwann selbst nach einer Vergrösserung
des Limits, wieder einer kommt und sagt: "Das genügt mir
nicht, ich brauche mehr ".
Basic Pur = PureBasic
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

ich glaube nicht das eine rkommen wird
"em 100 verschachtelte ifs reichen nich"
^^
Antworten