AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

Offene Frage von "Delphi-Laie"
Ein Thema von Der schöne Günther · begonnen am 28. Jun 2017 · letzter Beitrag vom 2. Jul 2017
Antwort Antwort
Seite 2 von 2     12   
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#11

AW: Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

  Alt 29. Jun 2017, 15:22
Schaut euch doch mal die Screenshots an, statt zu spekulieren

Es geht nicht um den Timestamp im PE-Header (und selbst der war jahrelang statisch). Auch ASLR ist Betriebssystemsache und keine Aufgabe des Compilers. Und unterschiedliche Teile, die zuerst in der .exe landen, passen da genau so wenig zu. Parallelisierung müsste mehrere Threads für einzelne Methoden bedeuten, was ich mir nicht als effektiv vorstellen kann.

Es geht scheinbar in allen Fällen (in den Screenshots) um lediglich vier Byte, und zwischendurch pendeln die auch wieder zurück.
Zugegeben verwirrt Günther da mit "Sie sind völlig unterschiedlich" selber, denn "völlig" ist das wahrlich nicht

Ne Antwort habe ich auch nicht, da mein letztes Delphi XE (ja, noch ohne Zahl) war. Ist doch aber nicht soo schwer... zwei unterschiedliche Dateien nehmen, und zwei Funktionen am Wechsel zwischen Gleichlauf und Versatz disassemblieren und vergleichen, inwieweit die identisch sind, ob da ggfls. ein nop-Padding dazwischen ist... dann hätte der Compiler einfach Probleme mit dem Alignment.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#12

AW: Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

  Alt 29. Jun 2017, 15:24
Eventuell arbeitet der Compiler auch nicht ganz statisch und optimiert manchmal so und manchmal so.
Das kann ja "irgendwie nicht ganz wahr sein".

Seit wann ist die Optimierung ein - salopp forumuliert - Glücksspiel?

Hat der Kunde nicht das Recht auf stete vollumfängliche Optimierung gemäß den eingestellten Optionen?

Wenigstens ein Compiler sollte verläßlich, genaugenommen determiniert arbeiten. Ansonsten muß man sich über die Ablehnung solcher Compilate für sicherheitskritische Bereiche nicht wundern.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#13

AW: Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

  Alt 29. Jun 2017, 16:47
Äh, seit Ihr Euch sicher, dass der Compiler das Problem verursacht und nicht der Linker?
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#14

AW: Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

  Alt 29. Jun 2017, 18:58
Wenigstens ein Compiler sollte verläßlich, genaugenommen determiniert arbeiten. Ansonsten muß man sich über die Ablehnung solcher Compilate für sicherheitskritische Bereiche nicht wundern.
Zumindest sollte ein solches Feature nicht standardmäßig aktiviert sein.

Äh, seit Ihr Euch sicher, dass der Compiler das Problem verursacht und nicht der Linker?
Auch der Linker sollte standardmäßig deterministisch arbeiten.

@Günther:
Compilierst du eventuell auf einer Maschine mit Skylake CPU? Hier wurde ja ein CPU-Bug gefunden, der scheinbar speziell durch Compiler oft ausgelöst wird:
https://www.golem.de/news/cpu-bug-wi...06-128662.html
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#15

AW: Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

  Alt 29. Jun 2017, 19:07
Das beschrieben Verhalten habe ich bisher auf allen Maschinen und mit allen Delphis (Delphi 6..Delphi 10.1) beobachtet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

  Alt 29. Jun 2017, 20:34
Das beschrieben Verhalten habe ich bisher auf allen Maschinen und mit allen Delphis (Delphi 6..Delphi 10.1) beobachtet.
Und es wird zukünftig noch viel besser,
wenn sich LLVM (MSBuild) auch noch dazwischen hängt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#17

AW: Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

  Alt 2. Jul 2017, 15:15
War da nicht neulich ein Bug im 64-Bit Compiler bei dem IdeFixPack. Wo kein deterministischer Code erzeugt wurde ?
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#18

AW: Warum ergibt zwei mal kompileren keine identischen .exe-Dateien?

  Alt 2. Jul 2017, 16:09
War da nicht neulich ein Bug im 64-Bit Compiler bei dem IdeFixPack. Wo kein deterministischer Code erzeugt wurde ?
Was Du meinst, ist, daß der Compiler und/oder Linker (jedenfalls das monierte Programm) nicht determiniert bzw. deterministisch arbeitet und deshalb nicht immer den gleichen Code erzeugt. Das erstellte Programm selbst kann wiederum determiniert sein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz