Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Γλώσσες Προγραμματισμού Υπολογιστών

Γιατί το πρόγραμμα γλώσσας μηχανής που γράφτηκε από έναν υπολογιστή δεν θα τρέξει σε άλλο με διαφορετική CPU;

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

* Οδηγός Οδηγίας Αρχιτεκτονική (ISA): Αυτό είναι το θεμελιώδες σύνολο οδηγιών που κατανοεί μια CPU. Διαφορετικές CPU (ακόμη και από τον ίδιο κατασκευαστή) έχουν διαφορετικές ISA. Τι είναι μια απλή εντολή προσθήκης σε μια CPU μπορεί να είναι μια πολύπλοκη λειτουργία πολλαπλών βημάτων σε μια άλλη, ή δεν μπορεί να υπάρχει καν. Η κωδικοποίηση αυτών των οδηγιών (τα συγκεκριμένα πρότυπα bit που αντιπροσωπεύουν κάθε εντολή) ποικίλλει άγρια μεταξύ ISAs.

* Αριθμός καταχωρητών: Οι CPU διαθέτουν εσωτερικούς καταχωρητές για προσωρινή αποθήκευση δεδομένων. Ο αριθμός και το μέγεθος αυτών των καταχωρητών διαφέρουν μεταξύ των CPU. Ένα πρόγραμμα που γράφτηκε για να χρησιμοποιήσει έναν συγκεκριμένο αριθμό και τύπο μητρώων δεν θα λειτουργήσει σε μια CPU με διαφορετική διαμόρφωση.

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

* αναπαραστάσεις δεδομένων: Ο τρόπος με τον οποίο οι τύποι δεδομένων (ακέραιοι, αριθμοί κυμαινόμενου σημείου κ.λπ.) αντιπροσωπεύονται σε δυαδική μορφή μπορεί να διαφέρουν. Ένα πρόγραμμα που καταρτίστηκε για την εκπροσώπηση δεδομένων μιας CPU μπορεί να παράγει λανθασμένα αποτελέσματα ή ακόμη και να συντρίψει σε μια CPU με διαφορετική αναπαράσταση.

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

Στην ουσία, ο κώδικας μηχανής είναι εξαιρετικά χαμηλού επιπέδου και συνδέεται στενά με το φυσικό υλικό. Προσπαθώντας να εκτελέσετε τον κώδικα μηχανής που καταρτίζεται για μία CPU σε διαφορετικό είναι σαν να προσπαθείτε να παίξετε ένα ρεκόρ που προορίζεται για ένα πικάπ των 33 ° RPM σε ένα πικάπ 45 σ.α.λ. - οι ταχύτητες είναι διαφορετικές και το αποτέλεσμα είναι γεμάτο. Οι γλώσσες υψηλότερου επιπέδου (όπως C ++, Java, Python) επιλύουν αυτό το πρόβλημα χρησιμοποιώντας μεταγλωττιστές ή διερμηνείς για να μεταφράσουν τον κώδικα σε μορφή κατάλληλη για την αρχιτεκτονική του CPU του στόχου.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα