Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Allgemeines (OffTopic) » Konstante Kompilation?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
29.08.2005, 19:54 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)


Hallo,
Mich würde da mal, rein prinzipiell, eine compilertechnische Frage interessieren:

Angenommen, ich schreibe ein Programm, welches den Compiler vollständig ausreitzt (also Templates, ExceptionHandling, eigene Dateitypen, ordentlich Inline-Konstrutke und natürlich export Fuktion, jetzt als Beispiel mal an C++ orientiert) und kompiliere mein Programm zwei mal. Habe ich dann beide Male komplett identischen Binärcode?

Müsste doch eigentlich sein, schließlich ändere ich ja nichts am Quellcode, aber kann es sein dass sich die internen Routinen und Optimierungsfunktionen des Compilters in genau der gleichen Situation mal so und mal so verhalten?


P.s. Sorry für den Titel, aber eine bessere Beschreibung is' mir nicht eingefallen

Dieser Post wurde am 29.08.2005 um 19:54 Uhr von Reyx editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.08.2005, 20:12 Uhr
imhotep
followed the white rabbit


Wenn du die selben Flags und den selben Compiler(-version) verwendest und auf dem selben System compilierst ja.
Es wär möglich Compileroptimierungen(-grad) ab-/anzuschalten.

Ist ja immer noch ein deterministisches System und dann müsste bei selber Eingabe auch das gleiche rauskommen.

Dieser Post wurde am 29.08.2005 um 20:24 Uhr von imhotep editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.08.2005, 20:17 Uhr
Pablo
Supertux
(Operator)


ja, wieso solltest du nicht identischen Code haben (sofern du Optimierungsflags nicht geändert hast)
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.08.2005, 21:10 Uhr
Reyx
IT-fetischistischer Wurstsalat mit rostigem Berghorn
(Operator)



Zitat von imhotep:
Ist ja immer noch ein deterministisches System und dann müsste bei selber Eingabe auch das gleiche rauskommen.

Das wollte ich nur wissen
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.08.2005, 22:22 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


genau sowas testen doch bootstrap-tests oder nicht? kompilieren das programm doch zig mal und überprüfen dann ob das was hinten rauskommt identisch ist mit dem was rauskommen soll

(ok normal z.b beim kompilieren vom gcc kompiliert er sich selbst, dann nochmal, und nochmal, usw und schaut dann ob die "x-te generation" noch identisch ist)

theoretisch müsste sie es auch, ansonsten stimmt was nicht am compiler allgemein z.b.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
30.08.2005, 07:41 Uhr
virtual
Sexiest Bit alive
(Operator)


@Rexy

Im Allgemeinen ändert sich das Binary zwar nicht, aber man darf sich nicht darauf verlassen:

C++:
#include <stdio.h>

int main() {
    printf("Compilation date: "__DATE__"," __TIME__"\n");
}


Erzeugt immer unterschiedliche Binaries.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
30.08.2005, 15:04 Uhr
imhotep
followed the white rabbit


@virtual

Ist ja richtig, weil Date und Time veränderte Konstanten sind und den Quellcode verändern.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
31.08.2005, 00:12 Uhr
Hans
Library Walker
(Operator)


Hi,

da hast Du Dich aber vertan. Der Quellcode bleibt immer gleich, aber die Zeit und das Datum ändern sich, und somit die Binary, die am Ende heraus kommt.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
31.08.2005, 04:10 Uhr
imhotep
followed the white rabbit


Der Quellecode, der compiliert wird ändert sich, weil der Präcompiler die Defines und so auflöst und dann erst der Compiler loslegt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
31.08.2005, 09:13 Uhr
ao

(Operator)


Auch wenn man selbst keine __DATE__- oder __TIME__-Makros verwendet hat, kann es sein, dass die Übersetzungstools irgendwelche möglichst eindeutigen Nummern generieren und in den Binaries unterbringen. Zum Beispiel, damit man feststellen kann, ob zwei Kopien eines Kompilats aus derselben Übersetzung stammen oder nicht.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ Allgemeines (OffTopic) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: