PureBasic 4.00 Beta1 released!

Ankündigungen PureBasic oder die Community betreffend.
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag 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
Zuletzt geändert von Toshy am 03.02.2006 23:59, insgesamt 1-mal geändert.
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag 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.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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.
Bild
Benutzeravatar
benny
Beiträge: 383
Registriert: 29.08.2004 09:18
Wohnort: Am Ende des www's
Kontaktdaten:

Beitrag 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
:roll:
Achja, viele der neuen Schlüsselwörter werden von der IDE nicht
richtig eingefärbt.
Das kann ich nicht bestätigen.
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
Toshy
Beiträge: 713
Registriert: 22.03.2005 00:29
Computerausstattung: Computer und Strom vorhanden
Wohnort: LK Wolfenbüttel

Beitrag 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
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

@benny
Hast du versucht den Code zu kompilieren?
Bild
Benutzeravatar
benny
Beiträge: 383
Registriert: 29.08.2004 09:18
Wohnort: Am Ende des www's
Kontaktdaten:

Beitrag 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.
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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) + "]"
Bild
Antworten