Im Sommersemester 2004 galt es, wie schon viele Jahre davor, im Rahmen der �bung �bersetzerbau einen codeerzeugenden Compiler zu schreiben und zu optimieren. Ich m�chte hier ein paar der von mir eingesetzten naheliegenden und weniger naheliegenden Tricks vorstellen.
Registerbibliothek in der Anwendung | |
---|---|
Ich habe f�r jeden Knoten eine eigene Behandlungsroutine geschrieben, die Folgende ist beispielsweise f�r die Behandlung von "add"-Befehlen zust�ndig. Das gezeigte Prinzip sollte aber f�r so ziemlich alle bin�ren Operationen anwendbar sein. 83�/*��������������arithmetics |
Kompliziert? | |
---|---|
Sieht im ersten Moment sehr kompliziert aus -- es ist allerdings auch schon heftig optimiert worden darin. 89 - 101 wir haben zwei Register als Operanden. Der Fall ist fast so gut, wie Nummer vier: Lauter Konstanten. Ich habe f�r nichtvorhandene Register -1 eingesetzt und nicht etwa 0 -- die Nummerierung der Register beginnt ja bei 0 und wir w�rden dadurch einen der 32 Register nicht ansprechen k�nnen. Hier sehen wir gleich eine wichtige Optimierung: Register-Recycling. Handelt es sich bei einem der Register n�mlich um einen Arbeitsregister, k�nnen wir ihn gleich als Zielregister f�r die Operation definieren (92 bzw. 95). Praktisch! Wenn nicht: Auch kein Problem, einfach einen neuen aus dem Pool nehmen. 102 - 130 hier das gleiche f�r nur einen Register. Vermutlich kann man das alles kompakter anschreiben. 130 - 149 im Falle lauter Konstanten braucht man gar keine Operation! Einfach das Ergebnis, wenn es im Rahmen bleibt, als Konstante weitergeben. Sehr effizient, habe ich mir von Peter aka. Risewind aus dem Informatik-Forum abgeschaut. Dankesch�n! |
Comments - Make a comment |
The comments are owned by the poster. We are not responsible for its content.
|
AdministrativeTexts
updated by freddiemac1993, 2013-06-14
wiki
Re: adventures
created by brittdavis10, 2012-02-23 (1 rply, 3 views)
thread
Re: how to run phpwebsite...
created by alexander, 2011-08-25 (2 rpls, 3607 views)
thread
Re: Forum tags
created by HaroldFaragher, 2011-08-22 (3 rpls, 8488 views)
thread