Διαφορά μεταξύ Assembler και Διερμηνέα

Anonim

Assembler εναντίον Διερμηνέα

Γενικά, ο μεταγλωττιστής είναι ένα πρόγραμμα υπολογιστή που διαβάζει ένα πρόγραμμα γραμμένο σε μία γλώσσα, που ονομάζεται γλώσσα πηγής και μεταφράζεται σε άλλη γλώσσα, η οποία ονομάζεται γλώσσα στόχου. Παραδοσιακά, η γλώσσα πηγής είναι μια γλώσσα υψηλού επιπέδου όπως η C ++ και η γλώσσα στόχος είναι μια γλώσσα χαμηλού επιπέδου, όπως η γλώσσα συναρμολόγησης. Ωστόσο, υπάρχουν μεταγλωττιστές που μπορούν να μετατρέψουν ένα πρόγραμμα προέλευσης γραμμένο στη γλώσσα συναρμολόγησης και να το μετατρέψουν σε κώδικα μηχανής ή κώδικα αντικειμένου. Οι συναρμολογητές είναι τέτοια εργαλεία. Από την άλλη πλευρά, οι διερμηνείς είναι εργαλεία που εκτελούν οδηγίες γραμμένες σε κάποια γλώσσα προγραμματισμού. Ο διερμηνέας μπορεί είτε να εκτελέσει άμεσα πηγαίο κώδικα υψηλού επιπέδου είτε να μεταφράσει τον σε ενδιάμεσο κώδικα και στη συνέχεια να τον ερμηνεύσει ή να εκτελέσει τον προ-κωδικοποιημένο κώδικα.

Τι είναι ένας συναρμολογητής;

Το Assembler είναι λογισμικό ή εργαλείο που μεταφράζει τη γλώσσα συναρμολόγησης στον κώδικα μηχανής. Έτσι, ένας συναρμολογητής είναι ένας τύπος ενός μεταγλωττιστή και ο πηγαίος κώδικας γράφεται στη γλώσσα συναρμολόγησης. Η συναρμολόγηση είναι μια γλώσσα αναγνώσιμη από τον άνθρωπο, αλλά συνήθως έχει μια σχέση ενός προς έναν με τον αντίστοιχο κώδικα μηχανής. Επομένως, ένας συναρμολογητής λέγεται ότι εκτελεί ισομορφική (μία προς μία χαρτογράφηση) μετάφραση. Οι προηγμένοι συναρμολογητές παρέχουν πρόσθετα χαρακτηριστικά που υποστηρίζουν τις διαδικασίες ανάπτυξης προγραμμάτων και εντοπισμού σφαλμάτων. Για παράδειγμα, ο τύπος των συναρμολογητών που ονομάζονται μακροσυναρμολογητές παρέχει μια μακροεντολή.

Τι είναι ένας διερμηνέας;

Ένας διερμηνέας είναι ένα πρόγραμμα υπολογιστή ή ένα εργαλείο που εκτελεί οδηγίες προγραμματισμού. Ένας διερμηνέας μπορεί είτε να εκτελέσει απευθείας τον πηγαίο κώδικα είτε να μετατρέψει την πηγή σε έναν ενδιάμεσο κώδικα και να την εκτελέσει απευθείας ή να εκτελέσει τον προσυμπυκνωμένο κώδικα που παράγεται από έναν μεταγλωττιστή (ορισμένα συστήματα διερμηνέων περιλαμβάνουν έναν μεταγλωττιστή για αυτό το έργο). Γλώσσες όπως το Perl, το Python, το MATLAB και το Ruby είναι παραδείγματα γλωσσών προγραμματισμού που χρησιμοποιούν έναν ενδιάμεσο κώδικα. Το UCSD Pascal ερμηνεύει έναν πρόδρομο κώδικα. Γλώσσες όπως η Java, η BASIC και η Samlltalk καταρτίζουν πρώτα την πηγή σε έναν ενδιάμεσο κώδικα που ονομάζεται bytecode και μετά την ερμηνεύουν.

Ποια είναι η διαφορά μεταξύ ενός Assembler και ενός Διερμηνέα;

Ο συναρμολογητής μπορεί να θεωρηθεί ως ένας ειδικός τύπος μεταγλωττιστή, ο οποίος μεταφράζει μόνο τη γλώσσα συναρμολόγησης στον κώδικα μηχανής. Οι διερμηνείς είναι εργαλεία που εκτελούν οδηγίες γραμμένες σε κάποια γλώσσα. Τα συστήματα διερμηνέων μπορούν να περιλαμβάνουν έναν μεταγλωττιστή για την εκ των προτέρων κατάρτιση κώδικα πριν από την ερμηνεία, αλλά ένας διερμηνέας δεν μπορεί να ονομαστεί ένας ειδικός τύπος ενός μεταγλωττιστή. Οι συναρμολογητές παράγουν έναν κώδικα αντικειμένου, ο οποίος ίσως πρέπει να συνδεθεί χρησιμοποιώντας προγράμματα linker για να τρέξει σε ένα μηχάνημα, αλλά οι περισσότεροι διερμηνείς μπορούν να ολοκληρώσουν από μόνοι τους την εκτέλεση ενός προγράμματος.Ένας συναρμολογητής θα κάνει συνήθως μια μετάφραση ένα προς ένα, αλλά αυτό δεν ισχύει για τους περισσότερους διερμηνείς. Επειδή η γλώσσα Συναρμολόγησης έχει χαρτογράφηση ενός προς έναν με τον κωδικό μηχανής, ένας συναρμολογητής μπορεί να χρησιμοποιηθεί για την παραγωγή κώδικα που εκτελείται πολύ αποτελεσματικά για περιπτώσεις στις οποίες η απόδοση είναι πολύ σημαντική (π.χ. για μηχανές γραφικών, ενσωματωμένα συστήματα με περιορισμένους πόρους υλικού σε σύγκριση με έναν προσωπικό υπολογιστή όπως τα μικροκύματα, τα πλυντήρια, κ.λπ.). Από την άλλη πλευρά, οι διερμηνείς χρησιμοποιούνται όταν χρειάζεστε υψηλή φορητότητα. Για παράδειγμα, το ίδιο Java bytecode μπορεί να εκτελεστεί σε διαφορετικές πλατφόρμες χρησιμοποιώντας τον κατάλληλο διερμηνέα (JVM).