Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#13

AW: Minimale Exe-Datei- bzw. Compilatsgröße VCL-freier Delphiprogramme

  Alt 9. Mai 2012, 13:17
Windowsprogramme bekommen beim Compilieren im PE-Header mitgeteilt, wo sie im RAM liegen möchten.

Falls das nicht möglich ist, müssen sie verschoben werden, dabei ändern sich natürlich auch Speicheradressen, für Sprungziele, Konstanten usw., welche nun wo anders liegen.
Dafür gibt es diese Tabelle, denn darüber kann Windos nun diese Speicheradressen "korrigieren"/anpassen.

StripReloc entfernt diese Tabelle einfach, womit es beim Verschieben zu Fehler kommt, da diese Adressen nicht mehr angepaßt werden können, weil winodws sie ja nicht kennt.

Das ist vorallem für DLLs wichtig, da irgendwie niemand sich die Mühe macht dort sich ein hübsches Fleckchen auszusuchen und demnach alle Delphi-DLLs an der selben Stelle liegen würden. (bei C++ und Co. natürlich genauso, jemachdem was dort als Standardwert vorhanden ist)

Die EXE wird "meistens" als Erstes geladen, womit ihr Platz "meistens" frei ist.
Ausnahme ist EXEPacker, Encrypter, Antihackerschutz und Dergleichen, wo ein Miniprogrammcode noch vor der EXE gestartet wird und dieses dann die eigentliche EXE läd.



Auch kann man viele Resourcen entfernen, da sie meistens nicht verwendet werden.
So bringt Delphi sein eigenes kleines Cursor-Set (Mauszeiger).
Kann man sich gerne mal über einem Resource-Hacker/Editor ansehn.



Und ja, neuere RTTI-Informationen sind natürlich auch erst in den entsprechenden neueren Delphi-Versionen dazugekommen.



Ansonsten geh ich davon auß, daß man heutzutage genug Speicher hat.
Ich versuche zwar hier und da was einzusparen (über den Programmcode und meine eigenen Resourcen), aber übertreiben muß man es nun auch nicht unbedingt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 9. Mai 2012 um 13:20 Uhr)
  Mit Zitat antworten Zitat