Seite 3 von 5
Verfasst: 08.10.2005 17:22
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.
Verfasst: 08.10.2005 17:46
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.
Verfasst: 09.10.2005 03:09
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.
Verfasst: 09.10.2005 11:04
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
Verfasst: 11.10.2005 14:52
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
Will doch auch was lernen und besser werden... (*meine vorbilder* *schleim*

)
Mfg
Der Marc

Verfasst: 11.10.2005 15:05
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
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)
Verfasst: 11.10.2005 15:16
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
Verfasst: 13.10.2005 01:32
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 (

) 51 sec konnte der Optimierer die Engine bringen. Es bringt also auch was in fertigen Programmen

Verfasst: 15.10.2005 18:21
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.
Verfasst: 15.10.2005 18:33
von MVXA
ich werde es sofort testen

.