Assembler vs Compiler

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

Τι είναι ένας μεταγλωττιστής;

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

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

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

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

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