Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Map files - Wie komme ich auf die Gesamtgröße (https://www.delphipraxis.net/179693-map-files-wie-komme-ich-auf-die-gesamtgroesse.html)

Union 25. Mär 2014 10:30

Map files - Wie komme ich auf die Gesamtgröße
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich benutze seit einiger Zeit ein Tool um mir die Größe verschiedener Module eines Projekts aus dem erzeugten Mapfile anzeigen zu lassen. Damit will ich ermitteln, ob überflüssige Module eingebunden sind, die die erzeugte ausführbare Datei aufblähen. Das Tool rechnet auch alles richtig zusammen (in Stichproben mit Taschenrechner verifiziert).

Ein gravierendes Problem gibt es aber: Die Summe aller Größen im Mapfile ergibt nie die Größe der ausführbaren Datei. Die ist immer 40%-50% größer als die Summen der Größen im Mapfile.

Wo ist mein Denkfehler?

himitsu 25. Mär 2014 10:34

AW: Map files - Wie komme ich auf die Gesamtgröße
 
Sind das nur die CODE- oder auch die DATA-Sektionen, Resourcen, Realloc-Tabelle und was es sonst noch gibt?

Union 25. Mär 2014 10:46

AW: Map files - Wie komme ich auf die Gesamtgröße
 
Ich werte für Win32 BSS, CODE, ICODE, und DATA aus. Bei ARM gibt es keine einfache Unterscheidung (außer man merkt sich die Section-Grenzen), da werte ich alles aus. Der Aufbau bei AARM ist auch relativ simpel: zunächst werden die gelinkten Objekte mit einer Nummer versehen und die wird dann bei jedem Symbol referenziert. So hat das FMX.Controls.iOs.o in dem Mapfile beispielsweise die Nummer [129] und die taucht dann später wieder auf.

Auch wenn ich die Segmentübersicht von Win32 addiere komme ich nicht auf die EXE-Größe:
Code:
 Start        Length    Name                  Class
 0001:00000000 0074B784H .text                  CODE
 0002:00000000 0001B8B4H .data                  DATA
 0002:0001B8B4 0010632DH .bss                   BSS
0x08FD365 -> 9.425.765 (tatsächlich 12.963.840 Bytes)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz