Γλώσσα μηχανής

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

Μια εντολή λέει στη διεργασία ποια λειτουργία πρέπει να εκτελέσει. Κάθε εντολή αποτελείται από έναν κωδικό λειτουργίας (opcode) και έναν ή περισσότερους τελεστές. Οι τελεστές είναι συνήθως διευθύνσεις μνήμης ή δεδομένα. Ένα σύνολο εντολών είναι ένας κατάλογος των opcodes που είναι διαθέσιμοι για έναν υπολογιστή. Ο κώδικας μηχανής είναι αυτό στο οποίο μεταγλωττίζονται ή διερμηνεύονται ο κώδικας συναρμολόγησης και άλλες γλώσσες προγραμματισμού.

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

Γράφοντας κώδικα μηχανής

Ο κώδικας μηχανής μπορεί να γραφτεί σε διάφορες μορφές:

  • Χρησιμοποιώντας έναν αριθμό διακοπτών. Αυτό δημιουργεί μια ακολουθία από 1 και 0. Αυτό χρησιμοποιήθηκε στις πρώτες ημέρες της πληροφορικής. Από τη δεκαετία του 1970, δεν χρησιμοποιείται πλέον.
  • Χρησιμοποιώντας έναν επεξεργαστήHex. Αυτό επιτρέπει τη χρήση κωδικών λειτουργίας αντί του αριθμού της εντολής.
  • Χρήση ενός Assembler. Οι γλώσσες συναρμολόγησης είναι απλούστερες από τους κωδικούς λειτουργίας. Η σύνταξή τους είναι πιο εύκολη στην κατανόηση από τη γλώσσα μηχανής αλλά πιο δύσκολη από τις γλώσσες υψηλού επιπέδου. Ο assembler θα μεταφράσει μόνος του τον πηγαίο κώδικα σε κώδικα μηχανής.
  • Η χρήση μιας γλώσσας προγραμματισμού υψηλού επιπέδου επιτρέπει προγράμματα που χρησιμοποιούν κώδικα που είναι ευκολότερο να διαβαστεί και να γραφτεί. Τα προγράμματα αυτά μεταφράζονται σε κώδικα μηχανής. Η μετάφραση μπορεί να γίνει σε πολλά βήματα. Τα προγράμματα Java βελτιστοποιούνται πρώτα σε κώδικα byte. Στη συνέχεια μεταφράζονται σε γλώσσα μηχανής όταν χρησιμοποιούνται.
Μπροστινό μέρος ενός πρώιμου μίνι υπολογιστή, με διακόπτες για την εισαγωγή του κώδικα μηχανήςZoom
Μπροστινό μέρος ενός πρώιμου μίνι υπολογιστή, με διακόπτες για την εισαγωγή του κώδικα μηχανής

Τυπικές εντολές του κώδικα μηχανής

Υπάρχουν πολλά είδη εντολών που βρίσκονται συνήθως σε ένα σύνολο εντολών:

  • Αριθμητικές πράξεις: Πολλαπλασιασμός, διαίρεση.
  • Λογικές πράξεις: άρνηση.
  • Πράξεις που ενεργούν σε μεμονωμένα bits: Μετατόπιση bit προς τα αριστερά ή προς τα δεξιά.
  • Πράξεις που ενεργούν στη μνήμη: αντιγραφή μιας τιμής από έναν καταχωρητή σε έναν άλλο.
  • Πράξεις που συγκρίνουν δύο τιμές: μεγαλύτερο από, μικρότερο από, ίσο.
  • Πράξεις που συνδυάζουν άλλες πράξεις: πρόσθεση, σύγκριση και αντιγραφή αν είναι ίσες με κάποια τιμή (ως μία πράξη), άλμα σε κάποιο σημείο του προγράμματος αν ένας καταχωρητής είναι μηδέν.
  • Πράξεις που δρουν στη ροή του προγράμματος: άλμα σε κάποια διεύθυνση.
  • Πράξεις που μετατρέπουν τύπους δεδομένων: π.χ. μετατροπή ενός ακέραιου αριθμού 32 bit σε ακέραιο αριθμό 64 bit, μετατροπή μιας τιμής κινητής υποδιαστολής σε ακέραιο αριθμό (με αποκοπή).

Πολλοί σύγχρονοι επεξεργαστές χρησιμοποιούν μικροκώδικα για ορισμένες από τις εντολές. Οι πιο σύνθετες εντολές τείνουν να τον χρησιμοποιούν. Αυτό γίνεται συχνά με αρχιτεκτονικές CISC.

Οδηγίες

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

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

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

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

Τα σχέδια επεξεργαστών μπορεί να είναι διαφορετικά με άλλους τρόπους. Διαφορετικές εντολές μπορεί να έχουν διαφορετικό μήκος. Επίσης, μπορεί να έχουν το ίδιο μήκος. Το να έχουν όλες οι εντολές το ίδιο μήκος μπορεί να απλοποιήσει τη σχεδίαση.

Παράδειγμα

Η αρχιτεκτονική MIPS διαθέτει εντολές μήκους 32 bit. Αυτή η ενότητα περιέχει παραδείγματα κώδικα. Ο γενικός τύπος της εντολής βρίσκεται στο πεδίο op (operation). Πρόκειται για τα υψηλότερα 6 bits. Οι εντολές τύπου J (άλμα) και τύπου I (άμεση) δίνονται πλήρως από την op. Οι εντολές τύπου R (register) περιλαμβάνουν το πεδίο funct. Καθορίζει την ακριβή λειτουργία του κώδικα. Τα πεδία που χρησιμοποιούνται σε αυτούς τους τύπους είναι τα εξής:

      6 5 5 5 5 5 5 6 bits [ op | rs | rt | rd |shamt| funct] R-τύπος [ op | rs | rt | address/immediate] I-τύπος [ op | target address ] J-τύπος

Τα rs, rt και rd υποδεικνύουν τους τελεστές καταχωρητή. Τα πεδία address ή immediate περιέχουν απευθείας έναν τελεστή.

Παράδειγμα: προσθέστε τους καταχωρητές 1 και 2. Τοποθετήστε το αποτέλεσμα στον καταχωρητή 6. Κωδικοποιείται:

[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 32 δεκαδικό 000000 00001 00010 00110 00000 100000 δυαδικό

Φορτώστε μια τιμή στον καταχωρητή 8. Πάρτε την από το κελί μνήμης 68 κελιά μετά τη θέση που αναφέρεται στον καταχωρητή 3:

[ op | rs | rt | address/immediate] 35 3 8 68 δεκαδικό 100011 00011 01000 00000 00001 000100 δυαδικό

Μετάβαση στη διεύθυνση 1024:

[ op | διεύθυνση στόχου ] 2 1024 δεκαδικό 000010 00000 00000 00000 00000 10000 000000 δυαδικό

Σχετικές σελίδες

Ερωτήσεις και απαντήσεις

Ερ: Τι είναι ο κώδικας μηχανής;


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

Ερ: Ποιο είναι το χαμηλότερο επίπεδο λογισμικού;


A: Ο κώδικας μηχανής είναι το χαμηλότερο επίπεδο λογισμικού.

Ερ: Πώς εκτελούνται άλλες γλώσσες προγραμματισμού από τους υπολογιστές;


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

Ε: Από τι αποτελείται μια εντολή στον κώδικα μηχανής;


Α: Μια εντολή στον κώδικα μηχανής αποτελείται από έναν κωδικό λειτουργίας (opcode) και έναν ή περισσότερους τελεστές. Οι τελεστές είναι συνήθως διευθύνσεις μνήμης ή δεδομένα.

Ε: Τι είναι ένα σύνολο εντολών;


Α: Ένα σύνολο εντολών είναι ένας κατάλογος των κωδικών λειτουργίας που είναι διαθέσιμοι για έναν υπολογιστή.

Ερ: Τι κάνουν οι κατασκευαστές προγραμμάτων με τον κώδικα;


Α: Οι κατασκευαστές προγραμμάτων μετατρέπουν τον κώδικα σε μια άλλη γλώσσα ή σε κώδικα μηχανής.

Ε: Ποιο είναι ένα άλλο όνομα για τον κώδικα μηχανής;


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

AlegsaOnline.com - 2020 / 2023 - License CC3