Εντολές τριών...

31
Οργάνωση Η/Υ Γλώσσα Assembly Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

Transcript of Εντολές τριών...

Page 1: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Οργάνωση Η/Υ

Γλώσσα Assembly

Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο ΜακεδονίαςΑ. Χατζηγεωργίου-Η. Σακελλαρίου

Page 2: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Δομή του TRN

KME

Μνήμη

Μονάδα Ασύγχρονης Επικοινωνίας

Μονάδα απευθείας προσπέλασης μνήμης

Ελεγκτής δίσκουΔιάδ

ρομο

ς Δε

δομέ

νων

Διάδ

ρομο

ς Δι

ευθύ

νσεω

ν

Διάδ

ρομο

ς Ε

λέγχ

ου

Page 3: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

ΚΜΕ

● Η Κεντρική Μονάδα Επεξεργασία (KME, Central Processing Unit – CPU) είναι ο ‘’εγκέφαλος’’ του υπολογιστή.

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

– Η ΚΜΕ αποτελείται από την Μονάδα Ελέγχου, την Αριθμητική και Λογική Μονάδα και ορισμένους καταχωρητές.

Page 4: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

ΚΜΕ (cont)● Η Μονάδα Ελέγχου (Control Unit) δίνει τα

σήματα ελέγχου στην Αριθμητική και Λογική Μονάδα (ποια εντολή να εκτελέσει, πότε, με ποια δεδομένα)

● Η Αριθμητική και Λογική Μονάδα (ALU) εκτελεί αριθμητικές και λογικές πράξεις σε δυαδικές ακολουθίες.

● Εντολές (σύνολο εντολών – instruction set)− Τι είδους και πόσες;− Τι ενέργειες κάνουν;− Πως περιγράφονται;− Με πόσους τελεστές;

Page 5: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Τι είδους εντολές;● Εντολές μεταφοράς− Τιμή καταχωρητή ίση με μια σταθερά− Μεταφορά περιεχομένου θέσης μνήμης σε

καταχωρητή (load), μεταφορά καταχωρητή σε θέση μνήμης (store), κλπ.

● Αριθμητικές/Λογικές εντολές− Πρόσθεση, αφαίρεση, πολλαπλασιασμός, διαίρεση

μεταξύ καταχωρητών και (ίσως) θέσεων μνήμης− Σύζευξη/διάζευξη μεταξύ των ψηφίων των

καταχωρητών, συμπλήρωμα, κλπ.● Έλεγχος ροής− Άλματα χωρίς και υπό συνθήκη σε μια άλλη θέση− Άλμα υπορουτίνας

Page 6: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές και Αρχιτεκτονικές● CISC (Complex Instruction Set Computer)− Κάθε εντολή περιλαμβάνει “πολλές” χαμηλού

επιπέδου διεργασίες-σύνθετες εντολές.● RISC (Reduced Instruction Set Computer)− Απλές εντολές οι οποίες είναι και βελτιστοποιημένες

σε απόδοση.● MISC (Minimal Instruction Set Computer)− Πολύ μικρός αριθμός εντολών− Συνήθως βασισμένο σε μηχανές στοίβας (stack

machines).

Page 7: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Μορφή● Εντολές αναπαρίστανται με ένα αριθμό δυαδικών

ψηφίων (bits).● Για παράδειγμα− 00001 00 0000000000100 − Εντολή: φόρτωσε στον καταχωρητή Α τα δεδομένα

της θέσης 4 της μνήμης − Πρόγραμμα:− 00111 00 0000000000000− 01001 00 0000000000000− 11111 00 0000000000000− Επεξήγηση: φόρτωσε στον Α τη σταθερά 0, αύξησε

τον Α κατά 1, και σταμάτησε την εκτέλεση.

Page 8: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Γλώσσα Μηχανής● Μειονεκτήματα− Απαιτείται υπερβολικός χρόνος και προσπάθεια για

προγραμματισμό− Απαιτείται λεπτομερής γνώση του συγκεκριμένου Η/Υ− Επιρρεπής διαδικασία σε λάθη – δύσκολη

αποσφαλμάτωση− Δύσκολη τροποποίηση προγραμμάτων− Δύσκολος διαχωρισμός του προγράμματος σε

ανεξάρτητα τμήματα● Πλεονεκτήματα− Πλήρης έλεγχος των δυνατοτήτων του Η/Υ− Καλή γνώση γλώσσας μηχανής οδηγεί σε μικρά

προγράμματα με μικρό χρόνο εκτέλεσης.

Page 9: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Μορφή Assembly● Εντολές αναπαρίστανται με μνημονικά ονόματα.● Ένα πρόγραμμα (συμβολομεταφραστής / assembler)

αναλαμβάνει τη μετάφραση.● Για παράδειγμα− 00001 00 0000000000100 LDA 4◊ Εντολή: φόρτωσε στον καταχωρητή Α τα δεδομένα της

θέσης 4 της μνήμης − Πρόγραμμα:− 00111 00 0000000000000 ENA 0− 01001 00 0000000000000 INA− 11111 00 0000000000000 HTL◊ Επεξήγηση: φόρτωσε στον Α τη σταθερά 0, αύξησε τον

Α κατά 1, και σταμάτησε την εκτέλεση.

Page 10: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Συμβολική Γλώσσα (Assembly)● Πλεονεκτήματα− Ευκολότερος προγραμματισμός− Μνημονικά ονόματα για εντολές − Συμβολικές αντί πραγματικών διευθύνσεων− Μικρότερη εξάρτηση από τη δομή και τις λειτουργίες

του Η/Υ.− Ευκολότερη τροποποίηση− Στοιχειώδης διαχωρισμός προγραμμάτων με χρήση

υπορρουτινών.● Μειονεκτήματα− Απαιτείται επιπλέον χρονικό διάστημα (περιορισμένο)

για τη φάση της συμβολομετάφρασης.

Page 11: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Αριθμός Διευθύνσεων (Τελεστών)● Ο αριθμός των διευθύνσεων της κάθε εντολής

μπορεί να είναι:− 0 διευθύνσεις, με εφαρμογή συνήθως σε μηχανές

στοίβας, όπου όλες οι εντολές λαμβάνουν χώρα με ορίσματα που παίρνουν από μια στοίβα.

− 1 διεύθυνση, όπου τα αποτελέσματα των πράξεων υπονοούν πάντα την ύπαρξη ενός συσσωρευτή (accumulator)

− 2,3 ή περισσότερες διευθύνσεις (μηχανές καταχωρητών - register machines).

Page 12: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές τριών διευθύνσεων

• Μορφή Εντολής: <Κώδ. Εντολής> <διεύθ.δεδομ.1> <διεύθ.δεδομ.2> <διεύθ.αποτελ.>• Παραδείγματα

ΠΡΟΣΘΕΣΗ ADD X, Y, Z ;; Ζ = Χ + ΥΑΦΑΙΡΕΣΗ SUB X, Y, Z ;; Ζ = Χ - ΥΠΟΛ/ΣΜΟΣ MUL X, Y, Z ;; Ζ = Χ * ΥΔΙΑΙΡΕΣΗ DIV X, Υ, Ζ ;; Ζ = Χ / Υ

Page 13: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές τριών διευθύνσεων

Έστω η εντολή της C:A = B*(C+D*E-F/G) (5 Αριθμητικοί Τελεστές)

MUL D, E, T1DIV F, G, T2ADD C, T1, T1SUB T1, T2, T1MUL B, T1, A

(5 Εντολές assembly)

Page 14: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές τριών διευθύνσεων● Μειονέκτημα: Πολλά bits για την αποθήκευση των

εντολών● Πλεονέκτημα: Μικρά σχετικά προγράμματα (λίγες

εντολές)● Το μικρότερο πρόγραμμα που αντιστοιχεί στην

εντολή: Α = Β + C + D + E + F + GADD B,C,AADD A,D,AADD A,E,AADD A,F,AADD A,G,A

Όλες οι εντολές πλην της πρώτης χρειάζονται δύο μόνο διαφορετικές διευθύνσεις: Άσκοπη κατανάλωση μνήμης

Page 15: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές δύο διευθύνσεων● Μορφή Εντολής: <Κώδ. Εντολής> <διεύθ.δεδομ.1 και αποτελ.> <διεύθ.δεδομ.2>● Παραδείγματα:

ΠΡΟΣΘΕΣΗ ADD X, Y ;; Χ = Χ + ΥΑΦΑΙΡΕΣΗ SUB X, Y ;; Χ = Χ - ΥΠΟΛ/ΣΜΟΣ MUL X, Y ;; Χ = Χ * ΥΔΙΑΙΡΕΣΗ DIV X, Υ ;; Χ = Χ/Υ

Page 16: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Δύο διευθύνσεις vs. Τρείς Διευθύνσεις● Η εντολή τριών διευθύνσεων

MUL A, B, C● αντιστοιχεί στις:SUB C, C Μηδενισμός του αποτελέσματοςADD C, AMUL C, B● Οι δύο πρώτες εντολές στην ουσία μεταφέρουν το

περιεχόμενο της θέσης Α στην θέση C● Για αυτό και τα σύνολα εντολών δύο διευθύνσεων

περιέχουν και την εντολή MOVE X, Y

Page 17: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές δύο διευθύνσεων● Έστω η εντολή της C:A = B*(C+D*E-F/G) (5 Αριθμητικοί Τελεστές)● Χωρίς να καταστρέψουμε τα περιεχόμενα καμίας θέσης

μνήμης είναι:ΜΟVE A, D (D -> A)MUL A, EMOVE T, F (δεν καταστρέφουμε την F)DIV T, GADD A, CSUB A, TMUL A, B (7 εντολές)

Page 18: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές δύο διευθύνσεων● Το μικρότερο πρόγραμμα που αντιστοιχεί στην

εντολή:Α = Β + C + D + E + F + G

ΜΟVE A, BADD A, CADD A, DADD A, EADD A, FADD A, G (6 εντολές)

Page 19: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές μίας διεύθυνσης● Στις πράξεις υπονοείται ότι συμμετέχει ο

συσσωρευτής ΑCC● Μορφή Εντολής:<Κώδ. Εντολής> <διεύθ.δεδομ.1>● ΠαραδείγματαΠΡΟΣΘΕΣΗ ADD X (ACC = ACC + X)ΑΦΑΙΡΕΣΗ SUB X (ACC = ACC – X)ΠΟΛ/ΣΜΟΣ MUL X (ACC = ACC * X)ΔΙΑΙΡΕΣΗ DIV X (ACC = ACC / X)● υπάρχουν επίσης οι εντολές μεταφοράςLOAD X (ACC = X)STORE X (X = ACC)

Page 20: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές μίας διεύθυνσης● Έστω η εντολή της C: A = B*(C+D*E-F/G)LOAD DMUL ESTORE T1LOAD FDIV GSTORE T2LOAD CADD T1SUB T2MUL BSTORE A ( έντεκα εντολές)

Page 21: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές μηδέν διευθύνσεων● Δεν προσδιορίζονται διευθύνσεις σαν ορίσματα.● Βασίζονται στη χρήση στοίβας (stack)● Η στοίβα είναι γνωστή και ως μνήμη LIFO● Οι καταχωρητές ενός Η/Υ μπορεί να θεωρηθούν ως

στοίβα:− Κορυφή στοίβας (πρώτος καταχωρητής)− Δεύτερος καταχωρητής κ.ο.κ.− Τελευταίος καταχωρητής -> Βάση στοίβας

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

Page 22: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές μηδέν διευθύνσεων

5313-2

36578512-765-7

ADDADD 813-2

36578512-765-7

undefined

5

813-2

36578512-765-7

Page 23: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εντολές μηδέν διευθύνσεων

● Οι υπολογιστές μηδέν διευθύνσεων πρέπει οπωσδήποτε να έχουν δύο τουλάχιστον εντολές μιας διεύθυνσης:

– LOAD X– (ανακαλεί το περιεχόμενο της θέσης Χ και το

προσθέτει στην κορυφή της στοίβας – τα υπόλοιπα μετακινούνται προς τα κάτω)

– STORE X– (αφαιρεί το περιεχόμενο της κορυφής και το

αποθηκεύει στη θέση Χ της μνήμης – τα υπόλοιπα μετακινούνται προς τα πάνω)

Page 24: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Αντίστροφη Πολωνική Γραφή● Πως γράφουμε μία κανονική παράσταση (π.χ.

Pascal ή C ) σε υπολογιστή στοίβας ?● Με μετατροπή της έκφρασης σε Αντίστροφο

Πολωνικό Συμβολισμό ή μεταθεματικό συμβολισμό● Στο συμβολισμό αυτό, οι τελεστές ακολουθούν τους

τελεστέους● Εμφανίζονται με τη σειρά με την οποία πρέπει να

εφαρμοστούν

Page 25: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Αντίστροφη Πολωνική ΓραφήΕνδοθεματική παράσταση (infix notation)

α * b + ca + b * ca * b + c * da * b div c(a+b) div (c-d)((a+b) * c +d) div (e+f-g)

Μεταθεματική Παράσταση(postfix notation)

a b * c +a b c * +ab * cd* +a b * c divab + cd – divab+c*d+ef+g-div

Page 26: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Ενδοθεματική - Μεταθεματική

+

* C

Α Β

● H αλγεβρική έκφραση A*B + C μπορεί να παρασταθεί ως δένδρο:

● Ενδοδιατεταγμένος τρόπος διάσχισης– Επίσκεψη του αριστερού υποδένδρου– Επίσκεψη της ρίζας– Επίσκεψη του δεξιού υπόδενδρου

Page 27: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Ενδοθεματική - Μεταθεματική

function PostOrder(Node* ptr){ if(ptr != NULL) { PostOrder(ptr->left); PostOrder(ptr->right); printf(“%c”, ptr->data); }}

struct Node { char data; struct Node* left; struct Node* right;}

● Μεταδιατεταγμένος τρόπος διάσχισης− Επίσκεψη του αριστερού υποδένδρου− Επίσκεψη του δεξιού υπόδενδρου− Επίσκεψη της ρίζας

Page 28: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Αντίστροφη Πολωνική ΓραφήLOAD BLOAD CLOAD DLOAD EMULADDLOAD FLOAD GDIVSUBMULSTORE A

(12 εντολές)

● Έστω η εντολή εκχώρησης:Α = Β * (C + D*E – F div G)

● είναι ισοδύναμη με την μεταθεματική εντολή:

Β C D E * + F G div - * = A● που για έναν υπολογιστή στοίβας

μεταφράζεται στις εντολές:

Page 29: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Παράδειγμα Εκτέλεσης● Α = Β * (C + D*E – F div G)LOAD B

LOAD CLOAD DLOAD EMULADDLOAD FLOAD GDIVSUBMULSTORE A

A B C D E F G2 3 2 2 4 2

2232

432

72

2472

272

52

10

MUL ADD LOAD(s) DIV MULSUBLOAD(s)

Page 30: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Συμπέρασμα● Η εντολή :

Α = Β * (C + D*E – F div G)● απαιτεί:− 5 εντολές τριών διευθύνσεων− 7 εντολές δύο διευθύνσεων− 11 εντολές μίας διεύθυνσης− 12 εντολές υπολογιστή στοίβας

● Οι εντολές πολλών διευθύνσεων οδηγούν σε μικρότερα προγράμματα

● Τα κυκλώματα όμως για την υλοποίηση τέτοιων εντολών είναι πολυπλοκότερα

Page 31: Εντολές τριών διευθύνσεωνusers.uom.gr/~iliass/Courses/ComputerOrg/Slides/Introduction_to_assembly.pdfΚΜΕ (cont) Η Μονάδα Ελέγχου (Control Unit)

Εφαρμογές Assembly ● Embedded Systems● Οδηγούς Συσκευών● Προγραμματισμός παιχνιδιών● Όταν υπάρχουν πολύ περιορισμένοι πόροι.● Σε κρίσιμα συστήματα ελέγχου● ....