Wie viele Verschachtelte IF abfragen kann PB ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Ja, bis auf Zeile 2. Wieso sollen da Sachen stehen die bei nicht erfüllter Bedingung ausgeführt werden? Das wär ja dann schon ein Else, wobei dann aber ein JMP vor der 2. Zeile fehlen würde.

Aber wenns euch wirklich so interessiert könntet ihr auch einfach mal den Output von Purebasic analysieren:

Code: Alles auswählen

If A = B
  x = 0
Else
  x = 1
EndIf

Code: Alles auswählen

 MOV ebx,dword [v_A] ;Schreib A in Register Ebx
 CMP ebx,dword [v_B] ;Vergleiche Ebx mit B (CMP dword [v_A],dword [v_B] funktioniert nicht)
 JNE _EndIf2         ;Wenn a!=b springe zum Else
 MOV dword [v_x],0   ;x = 0
 JMP _EndIf1         ;Springe zum Endif, da sonst das Else auch ausgeführt werden würde
_EndIf2:             ;Else
 MOV dword [v_x],1   ;x = 1
_EndIf1:             ;Endif
Und im fertigen Programm sieht das dann so aus:

Code: Alles auswählen

0040106B  |. 8B1D 88214000  MOV EBX,DWORD PTR DS:[402188]
00401071  |. 3B1D 8C214000  CMP EBX,DWORD PTR DS:[40218C]
00401077  |. 75 0C          JNZ SHORT PureBasi.00401085
00401079  |. C705 90214000 >MOV DWORD PTR DS:[402190],0
00401083  |. EB 0A          JMP SHORT PureBasi.0040108F
00401085  |> C705 90214000 >MOV DWORD PTR DS:[402190],1
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Achso, alles klar. Danke. :D
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag von strgalt »

Nabend zusammen,

also den Spaß konnte ich mir ja auch nicht verkneifen. Bin auch der Meinung, dass es hier ne Grenze gibt. Mehr als 200 ineinander verschachtelte IF´s bekomm ich nicht hin, dann kackt der Compiler ab - und das bei nem Barton 3000+, 1 GB RAM und 240 GB freien Plattenspeicher
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Frage: Kackt er beim compilen ab oder beim ausführen?
Wenn er beim compilen abkackt, würd ich sagen, dass der Compiler hier einfach an seine Grenze stößt und z.B. durch einen Stack Overflow abstürzt, wenn er die IF Umsetzung rekursiv geschrieben hat.
Wenn er beim ausführen abstürzt, wird der Code einfach nur falsch compiled worden sein, was auf einen unsauberen Compiler zurückzuführen ist und evtl. auf Punkt 1 zurückzuführen ist.

/edit:
Zumal, wenn ich mir den Asm Output von Deem anschaue, dann sollten hier keine Probleme mit beliebig verschachtelten IFs auftreten.
Optimismus ist ein Mangel an Information.
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag von strgalt »

vermute stark das es am Stack liegt, was ein unsauberes compilieren aber dennoch nicht ausschließt.

Er stürzt beim compilieren ab. das fenster, dass compeliert wird bleibt auch stecken.
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

ist aber eigentlich egal, zeig mir mal einen der 200 ifs braucht, und zwar ineinander...
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag von strgalt »

nun, ist ja auch nicht mehr die Grage wer sie braucht, sondern eher, warum der compiler aussteigt
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Villt. ne KI, die erkennt, dass das total sinnlos ist und sich dann beendet :lol: ?
Bild
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag von Sylvia »

1) Kiffi hat recht

2) Unbegrenzt
Basic Pur = PureBasic
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

3) Ja

4) Ach doch nicht, weil MXVA recht hat

5) Wo war ich?

6) Nö
Optimismus ist ein Mangel an Information.
Antworten