Seite 6 von 18
Verfasst: 03.02.2006 23:29
von freedimension
Friedrichs hat geschrieben:
Was ich nicht verstehe ist, warum folgenden Code auf einmal nicht geht:
Obwohl ich selbst kein Assembler kann, schätze ich, dass es etwas damit zu tun hat, dass ein wenig an den Prozeduren gefeilt wurde. Evtl. hilft dir ja das hier:
Fred hat geschrieben:BTW, we added a cool feature if you use the '!' asm feature: the local variable labels will be generated automatically for this procedure. It follows the following naming scheme: p.v_name or p.p_name if it's a pointer (like global variables).
Code: Alles auswählen
Procedure a(Arg1)
! MOV dword [p.v_Arg1], 1
EndProcedure
This way you don't have to worry anymore about PB optimisations or stack adjustement.
Verfasst: 03.02.2006 23:31
von Toshy
@Batze
Hilfreiche antworten sind mir lieber.
Und ich tue zwar mein Bestes, aber ich spreche kein Einglisch und die paar Worter die ich kann helfen mir zwar ein bissl was zu verstehen, aber leider nicht alles. Es bleibt also bei meiner Frage.
@freedimension
Heißt es also, das PB ohne diese Einstellung NICHT Threadsafe ist?
Das muß ich nicht verstehen, was ist denn dann anders? und auf was würde es sich beziehen wenn es "nicht Threadsafe" ist, auf die Strings usw.?
Mit der CS sektion kann ich unter 3.94 sehr sicher arbeiten und vor allem im grunde ohne Performanceverlust. Und auf die Schnelligkeit kommt es mir besonders an.
[edit] deine Antwort war mal wieder schnelle als mein "Notfallproxy".
Jetzt habe ich wenigstens ne Ahnung woran es liegt (ASM-Zugriff). Muß zwar schauen wie das zum laufen zu bekommen ist, da ich kein ASM kann, aber wird schon klappen.
Gruß
Toshy
Verfasst: 03.02.2006 23:39
von freedimension
Friedrichs hat geschrieben:
Heißt es also, das PB ohne diese Einstellung NICHT Threadsafe ist?
Ja
Friedrichs hat geschrieben:
Das muß ich nicht verstehen, was ist denn dann anders?
Da kommen eine Menge zusätzlicher Sicherheitsmaßnahmen hinzu die den Code dementsprechend aufblähen und langsamer machen - nicht viel aber unter Umständen merkbar. Warum solltest du Ballast mit dir rumschleppen wenn du sowieso keine Threads verwendest oder diese nicht Gefahr laufen das Programm zu crashen?
Friedrichs hat geschrieben:
und auf was würde es sich beziehen wenn es "nicht Threadsafe" ist, auf die Strings usw.?
Ich schätze einmal auf alles was auch vorher schon Probleme bereitet hat, evtl. kann dir da aber fr34k mehr zu sagen.
Verfasst: 03.02.2006 23:39
von MLK
@Friedrichs:
du solltest dir die mühe machen und den abschnitt "Library: Thread" durchlesen und versuchen zu verstehen. pb kann jetzt critical sections nämlich von haus aus.
Verfasst: 03.02.2006 23:50
von MVXA
Kann mir das jemand erklären?
Code: Alles auswählen
CompilerIf Defined(A, #PB_Variable)
CompilerError "Global Variable allready declared! (do not reuse this variable name!)"
CompilerEndIf
CompilerIf Defined(B, #PB_Variable)
CompilerError "Global Variable allready declared! (do not reuse this variable name!)"
CompilerEndIf
CompilerIf Defined(A, #PB_Variable) Or Defined(B, #PB_Variable)
CompilerError "Global Variable allready declared! (do not reuse this variable name!)"
CompilerEndIf
Achja, viele der neuen Schlüsselwörter werden von der IDE nicht
richtig eingefärbt.
Verfasst: 04.02.2006 00:01
von benny
MVXA hat geschrieben:Kann mir das jemand erklären?
Code: Alles auswählen
CompilerIf Defined(A, #PB_Variable)
CompilerError "Global Variable allready declared! (do not reuse this variable name!)"
CompilerEndIf
CompilerIf Defined(B, #PB_Variable)
CompilerError "Global Variable allready declared! (do not reuse this variable name!)"
CompilerEndIf
CompilerIf Defined(A, #PB_Variable) Or Defined(B, #PB_Variable)
CompilerError "Global Variable allready declared! (do not reuse this variable name!)"
CompilerEndIf
Was genau möchtest Du denn wissen

Hier steht doch das wichtigste
eigentlich :
http://freak.purearea.net/v4/ReadMe.html#defined
Achja, viele der neuen Schlüsselwörter werden von der IDE nicht
richtig eingefärbt.
Das kann ich
nicht bestätigen.
Verfasst: 04.02.2006 00:10
von Toshy
MLK hat geschrieben:@Friedrichs:
du solltest dir die mühe machen und den abschnitt "Library: Thread" durchlesen und versuchen zu verstehen. pb kann jetzt critical sections nämlich von haus aus.
Also ich habe zwar den Mutexteil noch nicht ganz verstanden, es ist aber wohl was anderes als die eigene CS_Sektion die ich nutze bzw. hoffe bald komplett zu haben. Und fall es das Betriebssystemeigene Mutex ist, war es nicht so, das unter Windows98x diese in der Anzahl extrem beschränkt waren, oder ist dies irgend eine interen Sache?
Um die eigene(n) CS-Routine(n) komme ich aber nicht herum.
Ich werde als ein bissl waren müssen, bis sich die Beta verbreitet hat und dann darauf hoffen, das mir jemand die CS-ASM-Routinen ändert. Denn ASM verstehe ich gar nicht. Werde also solange mal mit der 3.94 weiter machen (müssen).
Gruß und Danke
Toshy
Verfasst: 04.02.2006 00:21
von MVXA
@benny
Hast du versucht den Code zu kompilieren?
Verfasst: 04.02.2006 00:42
von benny
MVXA hat geschrieben:@benny
Hast du versucht den Code zu kompilieren?
Nope. Hatte ich nicht. Wenn Du den Fehler meinst, dann liegt das IMHO
an dem
OR-Statement vom
CompilerIf. Sofern ich das sehe
ist dieses
Or keine CompilerDirektive, also kann man das
nicht
in Verbindung mit
CompilerIf verwenden.
Nur meine 2cts.
Verfasst: 04.02.2006 01:21
von MVXA
Und wie sieht es damit aus?
Code: Alles auswählen
sTest.s = ""
Debug "[" + LSet(sTest, 8) + "]"
sTest.s = "Test"
Debug "[" + LSet(sTest, 8) + "]"