Just another Purebasic Optimizer V 1.14

Anwendungen, Tools, Userlibs und anderes nützliches.
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

Beitrag von FloHimself »

Deeem2031 hat geschrieben:So kommen die optimierten Procs z.B. mit Callbacks nicht klar, weil intern Esi, Edi und Ebx geändert werden, ohne sie zurückzusetzen. Was zwar in PB Standard zu seien scheint, bei den meisten anderen Sprachen aber nicht.
das ist auch in anderen sprachen der fall. windows geht davon aus,
dass ESI, EDI, EBP und EBX nicht geändert werden.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Wie war das jetzt gemeint?
So?
"das ist auch in anderen sprachen der fall. Nur windows geht davon aus, dass ESI, EDI, EBP und EBX nicht geändert werden."
Oder so?
"das ist auch in anderen sprachen der fall. Auch windows geht davon aus, dass ESI, EDI, EBP und EBX nicht geändert werden."

Jedenfalls arbeitet Purebasic nicht mit Windowsstandard. In Purebasic kann man bedenkenlos Esi, Edi und Ebx ändern, die SYS-Procs machen das nämlich auch.

Hab allerdings einen Weg gefunden, meine alte Optimierung wieder einzubauen wobei Callbacks und dergleichen ausgelassen werden -> Version 1.11.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

Beitrag von FloHimself »

es war so gemeint: windows geht wenn es einen callback aufruft
(aufgerufen hat) davon aus, dass ESI, EDI, EBP und EBX im callback
nicht geädert wurden. daher werden von windows diese register in
diesem fall nicht gesichert. der callback muss die ursprünglichen
inhalte beim verlassen des callbacks wiederherstellen. dieses
verhalten ist sprachunabhängig.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Ja, das ist mir klar. Normalerweise machen das aber auch die Sprachen intern mit ihren Proceduren, so das man sicher sein kann das ESI, EDI, EBP und EBX immernoch gleich sind nachdem man eine procedure aufgerufen hat. Bei Purebasic ist das aber nicht so:

Code: Alles auswählen

!MOV dword[v_test], Esi
Debug test
Dim a.l(1)
!MOV dword[v_test], Esi
Debug test
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Ich will euch ja nicht stören oder gar nerven-aber kann mir jemand ganz langsam erklären was ihr da gerade redet? Ich bin n Anfänger und wpürde gerne mitreden- was zB ist ESI, EDI, EBP und EBX?

Und was genau macht der Optimierer jetzt?

Sry-aber ich würde gerne was dazulernen ;)
Ausserdem-was sind Callbacks nochmal?
Am besten ihr schlüsselt mit den ganzen Text an Optimierern auf und kommentiert mir das ganze damit ich irgendwie nasatzweise n Durchblick bekomme....

Das wär echt toll von Euch wenn ihr das machen würdet :allright:
Will doch auch was lernen und besser werden... (*meine vorbilder* *schleim* ;) )



Mfg
Der Marc :D
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Tafkadasom2k5 hat geschrieben:Ich bin n Anfänger und wpürde gerne mitreden- was zB ist ESI, EDI, EBP und EBX?
ESI, EDI, EBP & EBX sind ein paar der Register, mit denen der Computer rechnet. Wenn du dir später mal Assembler anschaust, dann wirst du verstehen, wozu die da sind und wie sie funktionieren.
Und was genau macht der Optimierer jetzt?
Optimieren? :?
Er nimmt den ASM-Output des Compilers und spielt daran etwas herum. Das Ergebnis nennt man optimierten Code, der dann anschließend zu einer Exe weitercompiliert wird.
Ausserdem-was sind Callbacks nochmal?
Schau' mal in der PB-Hilfe nach WindowCallback(), alternativ probiere mal die Forumsuche.
Am besten ihr schlüsselt mit den ganzen Text an Optimierern auf und kommentiert mir das ganze damit ich irgendwie nasatzweise n Durchblick bekomme....
Öhm... das wird jetzt aber zuviel und auch zu schwer zu erklären.
Wie gesagt, lerne Assembler, dann kannst du mitreden ;)
Das wär echt toll von Euch wenn ihr das machen würdet :allright:
Will doch auch was lernen und besser werden... (*meine vorbilder* *schleim* ;) )
Iiih, dieser Glibber!

Greetz Laurin

Edit:
Hier noch eine Mini-Assembler-Übersicht, falls es dich interessiert (PDF, 47 kB)
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Ahhhh Danke das is nett-nun habsch zumindest ansatzweise n Denkansatz was das die ganzen Fachwörter bedeuten ;)

Was optimieren is wusste ich auch so-aber ich hatte ed ganz gecheckt was da nun optimiert wird-erscheint aber bei genauem durchlesen irgendiwe logisch...^^

Danke nochmal,
Der Marc
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Version 1.12

Nichts weltbewegend neues, nur bisl an der Statistik rumgeschraubt und eine Optimierung für die Größe des/der Sources/Exe eingebaut.
Trotzdem lohnt sich der Download ;)

NTQ war übrigens mal so nett und hat den Unterschied bei seiner Raytracing-Engine gemessen: von langsamen 60 sec auf super schnelle ( :mrgreen: ) 51 sec konnte der Optimierer die Engine bringen. Es bringt also auch was in fertigen Programmen :)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

@MVXA: Da hast du deinen Optimierer für Linux: http://www.deeem2031.de/PB/Linux/optimizer
Der Code ist zwar fast der selbe wie bei der Windows Version, allerdings hab ich mir den Compiler-Output bei Linux nicht angesehen. Wenn der anders sein sollte als bei Windows könnte es zu Problemen kommen.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

ich werde es sofort testen :).
Bild
Antworten