Διαφορά μεταξύ του μεταγλωττιστή και του συναρμολογητή

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 1 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 11 Ενδέχεται 2024
Anonim
Διαφορά μεταξύ του μεταγλωττιστή και του συναρμολογητή - Τεχνολογία
Διαφορά μεταξύ του μεταγλωττιστή και του συναρμολογητή - Τεχνολογία

Περιεχόμενο


Το Compiler and Assembler διαδραματίζει σημαντικό ρόλο στην εκτέλεση ενός προγράμματος. Ορισμένοι μεταγλωττιστές παράγουν άμεσα τον εκτελέσιμο κώδικα αντί του κώδικα συναρμολόγησης. Ο μεταγλωττιστής παίρνει τον προεπεξεργασμένο πηγαίο κώδικα και τον μεταφράζει στον κώδικα συναρμολόγησης. Ο συναρμολογητής παίρνει τον κώδικα συναρμολόγησης από τον μεταγλωττιστή και μεταφράζει τον στον μετακινούμενο κωδικό μηχανής. Σε αυτό το άρθρο, έχω συζητήσει τις διαφορές μεταξύ μεταγλωττιστή και assembler με τη βοήθεια του πίνακα σύγκρισης που φαίνεται παρακάτω, απλά να ρίξετε μια ματιά.

  1. Συγκριτικό διάγραμμα
  2. Ορισμός
  3. Βασικές διαφορές
  4. συμπέρασμα

Συγκριτικό διάγραμμα

Βάση σύγκρισηςΜεταγλωττιστής Συναρμοστής
ΒασικόςΔημιουργεί τον κώδικα γλώσσας συναρμολόγησης ή απευθείας τον εκτελέσιμο κώδικα.Δημιουργεί τον μετακινούμενο κωδικό μηχανής.
ΕισαγωγήΠροηγμένος κώδικας προέλευσης.Κωδικός γλώσσας συναρμολόγησης.
Φάσεις / ΠεράσματαΟι φάσεις σύνταξης είναι λεξικός αναλυτής, αναλυτής σύνταξης, σημασιολογικός αναλυτής, παραγωγή ενδιάμεσου κώδικα, βελτιστοποίηση κώδικα, δημιουργία κώδικα.Ο συναρμολογητής πραγματοποιεί δύο περάσματα πάνω από τη δεδομένη είσοδο.
ΠαραγωγήΟ κώδικας συναρμολόγησης που παράγεται από τον μεταγλωττιστή είναι μια μνημονική έκδοση του κώδικα μηχανής.Ο μετακινούμενος κώδικας μηχανής που παράγεται από έναν assembler αντιπροσωπεύεται από δυαδικό κώδικα.


Ορισμός του μεταγλωττιστή

ο μεταγλωττιστής είναι ένα πρόγραμμα υπολογιστή που διαβάζει το πρόγραμμα γραμμένο σε μια γλώσσα πηγής, το μεταφράζει σε ισοδύναμο συμβολική γλώσσα και προωθεί τον κώδικα γλώσσας συναρμολόγησης στο Συναρμοστής. Ενώ η μετάφραση του πηγαίου κώδικα στον κώδικα συναρμολόγησης ο μεταγλωττιστής αναφέρει επίσης το λάθος στον πηγαίο κώδικα στον χρήστη του.

Οι μεταγλωττιστές ταξινομούνται επίσης ως ένα-πέρασμα, πολλαπλών περάσει, φορτίο-go, αποκοπή και βελτιστοποίηση. Η ταξινόμηση γίνεται με βάση τη λειτουργία που εκτελεί ο μεταγλωττιστής και τον τρόπο κατασκευής του. Παρά αυτές τις πολυπλοκότητες, το βασικό καθήκον του μεταγλωττιστή παραμένει το ίδιο.

Η σύνταξη γίνεται σε δύο μέρη, τμήμα ανάλυσης και συνθετικό τμήμα. ο τμήμα ανάλυσης σπάει τον πηγαίο κώδικα σε συστατικά κομμάτια και σχηματίζει την ενδιάμεση αναπαράσταση του πηγαίου κώδικα. ο συνθετικό τμήμα σχηματίζει τον κώδικα στόχου από την ενδιάμεση αναπαράσταση.


Η σύνταξη πραγματοποιείται στις ακόλουθες φάσεις:

Λεξικός αναλυτής, αναλυτής σύνταξης, σημασιολογικός αναλυτής, γεννήτρια ενδιάμεσου κώδικα, κώδικας βελτιστοποίησης, γεννήτρια κώδικα, πίνακας συμβόλων και χειριστής σφαλμάτων.

  • ο λεξικού αναλυτή διαβάζει τους χαρακτήρες του πηγαίου κώδικα και τις ομαδοποιεί στο ροές των μαρκών. Κάθε διακριτικό αντιπροσωπεύει τη λογική ακολουθία χαρακτήρων όπως λέξη-κλειδί, αναγνωριστικά στοιχεία, χειριστές. Εμφανίζεται η ακολουθία χαρακτήρων που σχηματίζουν ένα διακριτικό lexeme.
  • ο αναλυτή σύνταξης αναλύει το διακριτικό που λαμβάνεται από τον λεξικό αναλυτή και τις ομάδες μάρκες σε a ιεραρχική δομή.
  • ο σημασιολογικός αναλυτής ελέγχει τον πηγαίο κώδικα για οποιοδήποτε σημασιολογικό σφάλμα.
  • Ενδιάμεση γεννήτρια κώδικα δημιουργεί το ενδιάμεση εκπροσώπηση του πηγαίου κώδικα
  • ο code Optimizer βελτιστοποιεί τον ενδιάμεσο κώδικα στον πιο γρήγορο κώδικα μηχανής.
  • ο γεννήτρια κώδικα δημιουργεί τελικά τον κώδικα στόχου ο οποίος είναι α μετακινούμενο κωδικό μηχανής ή κώδικα συναρμολόγησης.
  • ο πίνακα συμβόλων είναι μια δομή δεδομένων που περιέχει την εγγραφή για κάθε αναγνωριστικό στον πηγαίο κώδικα.
  • Διαχειριστής σφαλμάτων ανιχνεύει το σφάλμα σε κάθε φάση και χειρίζεται αυτά τα σφάλματα.

Ορισμός του Assembler

Ορισμένοι μεταγλωττιστές εκτελούν το έργο του συναρμολογητή και παράγουν άμεσα έναν μετακινούμενο κώδικα μηχανής αντί του κώδικα συναρμολόγησης, ο οποίος μεταφέρεται περαιτέρω κατευθείαν στον σύνδεσμο / φορτωτή. ο συναρμοστής λαμβάνει ως είσοδο τον κώδικα συναρμολόγησης που παράγεται από τον μεταγλωττιστή και μεταφράζει τον σε μετακινούμενος κωδικός μηχανής.

Ας δούμε πώς ο κώδικας μηχανής είναι διαφορετικός από τον κώδικα συναρμολόγησης. Κωδικός συναρμολόγησης είναι το μνημονικός έκδοση του κώδικα μηχανής. Αυτό σημαίνει ότι ο κωδικός συναρμολόγησης χρησιμοποιεί ονόματα για την αντιπροσώπευση των λειτουργιών και δίνει ακόμη ονόματα στις διευθύνσεις μνήμης. Από τα άλλα χέρια, το κωδικό μηχάνημα χρήσεις δυαδικούς κώδικες για αναπαράσταση λειτουργιών και διευθύνσεων μνήμης.

Ακόμη και η απλούστερη μορφή του assembler εκτελεί δύο περάσματα πάνω από την είσοδο. ο πρώτο πέρασμα ανιχνεύει όλα τα αναγνωριστικά στον κωδικό συναρμολόγησης που υποδηλώνει τη θέση αποθήκευσης και την αποθήκευση τους στο πίνακα συμβόλων (εκτός από τον πίνακα συμβόλων μεταγλωττιστών). ο τοποθετείται η θέση αποθήκευσης στο αναγνωριστικό που συναντάται στο πρώτο πέρασμα.

Στο δεύτερο πέρασμα, η είσοδος σαρώνεται ξανά και αυτή τη φορά το κώδικα λειτουργίας είναι μεταφραστεί μέσα σε ακολουθία δυαδικών ψηφίων που αντιπροσωπεύει αυτή τη λειτουργία στον κώδικα μηχανής. Το δεύτερο πέρασμα μεταφράζεται επίσης αναγνωριστικά μέσα στο διευθύνσεις που ορίζονται στον πίνακα συμβόλων. Έτσι το δεύτερο πέρασμα παράγει το μετακινούμενος κωδικός μηχανής.

  1. Η βασική διαφορά μεταξύ του μεταγλωττιστή και του assembler είναι ότι το μεταγλωττιστής δημιουργεί κώδικα συναρμολόγησης και ορισμένοι μεταγλωττιστές μπορούν επίσης να δημιουργήσουν άμεσα εκτελέσιμο κώδικα, ενώ το συναρμοστής δημιουργεί μετακινούμενο κωδικό μηχανής.
  2. Ο μεταγλωττιστής λαμβάνει ως είσοδο το προεπεξεργασμένο κώδικα που δημιουργείται από τον προεπεξεργαστή. Από τα άλλα χέρια, ο συναρμολογητής παίρνει κωδικό συναρμολόγησης ως είσοδο.
  3. Η σύνταξη λαμβάνει χώρα σε δύο φάσεις φάση ανάλυσης και φάση σύνθεσης. Στη φάση ανάλυσης, η είσοδος περνάει λεξικός αναλυτής, αναλυτής σύνταξης, σημασιολογικός αναλυτής ενώ η ανάλυση της σύνθεσης πραγματοποιείται μέσω ενδιάμεση γεννήτρια κώδικα, βελτιστοποίηση κώδικα, γεννήτρια κώδικα. Από τα άλλα χέρια, ο συναρμολογητής περνάει την είσοδο μέσω δύο φάσεις. Η πρώτη φάση ανιχνεύει τα αναγνωριστικά και τις διευθύνσεις τους σε δεύτερη φάση ο κωδικός συναρμολόγησης μεταφράζεται σε δυαδικό κώδικα.
  4. Ο κώδικας συναρμολόγησης που παράγεται από τον μεταγλωττιστή είναι a μνημονική έκδοση του κωδικού μηχανής. Ωστόσο, ο μετακινούμενος κώδικας μηχανής που παράγεται από τον assembler είναι a δυαδικό μετακινούμενο κώδικα.

Συμπέρασμα:

Ο συναρμολογητής μπορεί να μην απαιτείται, καθώς ορισμένοι μεταγλωττιστές δημιουργούν άμεσα εκτελέσιμο κώδικα. Εάν χρησιμοποιείται συναρμολογητής, απαιτείται σύνδεσμος σύνδεσης όλων των ενσωματωμένων βιβλιοθηκών με τις λειτουργίες της βιβλιοθήκης που χρησιμοποιούνται στον πηγαίο κώδικα.