Προς το περιεχόμενο

Ισοδύναμος κώδικας δίνει ίδιο μεταγλωτισμένο αρχείο;


Haldol

Προτεινόμενες αναρτήσεις

Δημοσ.

Η απορία μου είναι η εξής. Δύο τμήματα κώδικα, διαφορετικά μεν στη σύνταξη, που όμως επιτελούν την ίδια λειτουργία... όταν μεταγλωττιστούν παράγουν το ίδιο εκτελέσιμο; Δηλαδή αν παράγω MD5 hash για τα δύο εκτελέσιμα, θα είναι το ίδια;

 

Απλό παράδειγμα του τι εννοώ «διαφορετικό αλλά ίδιο κώδικα»:

 

>int foo;

foo = 1;

if (foo == 1)
do_sth();

>
int foo = 1;

if (foo == 1)
{
do_sth();
}

Δημοσ.

Η απορία μου είναι η εξής. Δύο τμήματα κώδικα, διαφορετικά μεν στη σύνταξη, που όμως επιτελούν την ίδια λειτουργία... όταν μεταγλωττιστούν παράγουν το ίδιο εκτελέσιμο; Δηλαδή αν παράγω MD5 hash για τα δύο εκτελέσιμα, θα είναι το ίδια;

 

Απλό παράδειγμα του τι εννοώ «διαφορετικό αλλά ίδιο κώδικα»:

 

>int foo;

foo = 1;

if (foo == 1)
do_sth();

>
int foo = 1;

if (foo == 1)
{
do_sth();
}

Δημοσ.

Δοκίμασε το και πες και σε μας.

Προφανώς εξαρτάτε από το πως χειρίζεται τον πυγαίο κώδικα ο compiler αν κάνει δηλαδή optimization.

Δημοσ.

Δοκίμασε το και πες και σε μας.

Προφανώς εξαρτάτε από το πως χειρίζεται τον πυγαίο κώδικα ο compiler αν κάνει δηλαδή optimization.

Δημοσ.

Συνήθως οι σύγχρονοι compilers δεν κάνουν compile σε ότι βλέπουν.

Αναδιατάσσουν τον κώδικα, απαλείφουν άχρηστες μεταβλητές, μεταφέρουν κομμάτια κώδικα σε άλλη θέση κλπ.

Ειδικά αν ανοίξεις τις βελτιστοποιήσεις, αυτό που μεταφράζεται είναι αρκετά διαφορετικό από αυτό που έχεις γράψει.

 

Από αυτήν την άποψη, από δύο διαφορετικά πηγαία αρχεία - που κάνουν όμως το ίδιο πράγμα - μπορεί να παραχθεί το

ίδιο εκτελέσιμο διότι o compiler κάνοντας βελτιστοποίηση θα καταλήξει στο ίδιο αρχείο και στις δυο περιπτώσεις πριν

παράγει το exe.

Δημοσ.

Συνήθως οι σύγχρονοι compilers δεν κάνουν compile σε ότι βλέπουν.

Αναδιατάσσουν τον κώδικα, απαλείφουν άχρηστες μεταβλητές, μεταφέρουν κομμάτια κώδικα σε άλλη θέση κλπ.

Ειδικά αν ανοίξεις τις βελτιστοποιήσεις, αυτό που μεταφράζεται είναι αρκετά διαφορετικό από αυτό που έχεις γράψει.

 

Από αυτήν την άποψη, από δύο διαφορετικά πηγαία αρχεία - που κάνουν όμως το ίδιο πράγμα - μπορεί να παραχθεί το

ίδιο εκτελέσιμο διότι o compiler κάνοντας βελτιστοποίηση θα καταλήξει στο ίδιο αρχείο και στις δυο περιπτώσεις πριν

παράγει το exe.

Δημοσ.

Συνήθως μπορεί να αλλάξει το class id που παράγεται, το version και το μέγεθος του αρχείου.

 

Όμως επειδή δεν γνωρίζω άν το MD5 hash "κοιτάζει" κάτι απο τα παραπάνω δεν ξέρω να σου απαντήσω.

Δημοσ.

Συνήθως μπορεί να αλλάξει το class id που παράγεται, το version και το μέγεθος του αρχείου.

 

Όμως επειδή δεν γνωρίζω άν το MD5 hash "κοιτάζει" κάτι απο τα παραπάνω δεν ξέρω να σου απαντήσω.

Δημοσ.
Συνήθως μπορεί να αλλάξει το class id που παράγεται, το version και το μέγεθος του αρχείου.

 

Όμως επειδή δεν γνωρίζω άν το MD5 hash "κοιτάζει" κάτι απο τα παραπάνω δεν ξέρω να σου απαντήσω.

 

Για ποιο MD5 hash μιλάς;!;!;!

 

99.9% θα βγάλουν το ίδιο εκτελέσιμο, είτε με optimizations είτε χωρίς στο συγκεκριμένο παράδειγμα.

Δημοσ.
Συνήθως μπορεί να αλλάξει το class id που παράγεται, το version και το μέγεθος του αρχείου.

 

Όμως επειδή δεν γνωρίζω άν το MD5 hash "κοιτάζει" κάτι απο τα παραπάνω δεν ξέρω να σου απαντήσω.

 

Για ποιο MD5 hash μιλάς;!;!;!

 

99.9% θα βγάλουν το ίδιο εκτελέσιμο, είτε με optimizations είτε χωρίς στο συγκεκριμένο παράδειγμα.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...