Haldol Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Η απορία μου είναι η εξής. Δύο τμήματα κώδικα, διαφορετικά μεν στη σύνταξη, που όμως επιτελούν την ίδια λειτουργία... όταν μεταγλωττιστούν παράγουν το ίδιο εκτελέσιμο; Δηλαδή αν παράγω MD5 hash για τα δύο εκτελέσιμα, θα είναι το ίδια; Απλό παράδειγμα του τι εννοώ «διαφορετικό αλλά ίδιο κώδικα»: >int foo; foo = 1; if (foo == 1) do_sth(); > int foo = 1; if (foo == 1) { do_sth(); }
Haldol Δημοσ. 26 Οκτωβρίου 2010 Μέλος Δημοσ. 26 Οκτωβρίου 2010 Η απορία μου είναι η εξής. Δύο τμήματα κώδικα, διαφορετικά μεν στη σύνταξη, που όμως επιτελούν την ίδια λειτουργία... όταν μεταγλωττιστούν παράγουν το ίδιο εκτελέσιμο; Δηλαδή αν παράγω MD5 hash για τα δύο εκτελέσιμα, θα είναι το ίδια; Απλό παράδειγμα του τι εννοώ «διαφορετικό αλλά ίδιο κώδικα»: >int foo; foo = 1; if (foo == 1) do_sth(); > int foo = 1; if (foo == 1) { do_sth(); }
TheELF Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Δοκίμασε το και πες και σε μας. Προφανώς εξαρτάτε από το πως χειρίζεται τον πυγαίο κώδικα ο compiler αν κάνει δηλαδή optimization.
TheELF Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Δοκίμασε το και πες και σε μας. Προφανώς εξαρτάτε από το πως χειρίζεται τον πυγαίο κώδικα ο compiler αν κάνει δηλαδή optimization.
V.I.Smirnov Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Συνήθως οι σύγχρονοι compilers δεν κάνουν compile σε ότι βλέπουν. Αναδιατάσσουν τον κώδικα, απαλείφουν άχρηστες μεταβλητές, μεταφέρουν κομμάτια κώδικα σε άλλη θέση κλπ. Ειδικά αν ανοίξεις τις βελτιστοποιήσεις, αυτό που μεταφράζεται είναι αρκετά διαφορετικό από αυτό που έχεις γράψει. Από αυτήν την άποψη, από δύο διαφορετικά πηγαία αρχεία - που κάνουν όμως το ίδιο πράγμα - μπορεί να παραχθεί το ίδιο εκτελέσιμο διότι o compiler κάνοντας βελτιστοποίηση θα καταλήξει στο ίδιο αρχείο και στις δυο περιπτώσεις πριν παράγει το exe.
V.I.Smirnov Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Συνήθως οι σύγχρονοι compilers δεν κάνουν compile σε ότι βλέπουν. Αναδιατάσσουν τον κώδικα, απαλείφουν άχρηστες μεταβλητές, μεταφέρουν κομμάτια κώδικα σε άλλη θέση κλπ. Ειδικά αν ανοίξεις τις βελτιστοποιήσεις, αυτό που μεταφράζεται είναι αρκετά διαφορετικό από αυτό που έχεις γράψει. Από αυτήν την άποψη, από δύο διαφορετικά πηγαία αρχεία - που κάνουν όμως το ίδιο πράγμα - μπορεί να παραχθεί το ίδιο εκτελέσιμο διότι o compiler κάνοντας βελτιστοποίηση θα καταλήξει στο ίδιο αρχείο και στις δυο περιπτώσεις πριν παράγει το exe.
attsifte Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Συνήθως μπορεί να αλλάξει το class id που παράγεται, το version και το μέγεθος του αρχείου. Όμως επειδή δεν γνωρίζω άν το MD5 hash "κοιτάζει" κάτι απο τα παραπάνω δεν ξέρω να σου απαντήσω.
attsifte Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Συνήθως μπορεί να αλλάξει το class id που παράγεται, το version και το μέγεθος του αρχείου. Όμως επειδή δεν γνωρίζω άν το MD5 hash "κοιτάζει" κάτι απο τα παραπάνω δεν ξέρω να σου απαντήσω.
kagelos Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Συνήθως μπορεί να αλλάξει το class id που παράγεται, το version και το μέγεθος του αρχείου. Όμως επειδή δεν γνωρίζω άν το MD5 hash "κοιτάζει" κάτι απο τα παραπάνω δεν ξέρω να σου απαντήσω. Για ποιο MD5 hash μιλάς;!;!;! 99.9% θα βγάλουν το ίδιο εκτελέσιμο, είτε με optimizations είτε χωρίς στο συγκεκριμένο παράδειγμα.
kagelos Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 Συνήθως μπορεί να αλλάξει το class id που παράγεται, το version και το μέγεθος του αρχείου. Όμως επειδή δεν γνωρίζω άν το MD5 hash "κοιτάζει" κάτι απο τα παραπάνω δεν ξέρω να σου απαντήσω. Για ποιο MD5 hash μιλάς;!;!;! 99.9% θα βγάλουν το ίδιο εκτελέσιμο, είτε με optimizations είτε χωρίς στο συγκεκριμένο παράδειγμα.
NewProject Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 η απλα ( αν δουλευεις βεβαια με MSC++ compiler ) κανε output σε asm και δες τον κωδικα αν και συμφωνω με τον απο πανω
NewProject Δημοσ. 26 Οκτωβρίου 2010 Δημοσ. 26 Οκτωβρίου 2010 η απλα ( αν δουλευεις βεβαια με MSC++ compiler ) κανε output σε asm και δες τον κωδικα αν και συμφωνω με τον απο πανω
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.