ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

Σχετικά έγγραφα
Εντολές του MIPS (2)

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΠΛΕ- 027 Μικροεπεξεργαστές

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

Αρχιτεκτονική Υπολογιστών

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Αρχιτεκτονική Υπολογιστών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 2. Εντολές : Η γλώσσα του υπολογιστή

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Αριθμητική Υπολογιστών (Κεφάλαιο 3)

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 5: Εντολές Συγκρίσεων και Μεταφοράς Ελέγχου. Μανόλης Γ.Η.

με έμφαση στο MIPS R2000

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 2 Οργάνωση μνήμης Καταχωρητές του MIPS Εντολές του MIPS 1

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

-Επεξεργαστής: datapath (δίοδος δεδοµένων) (1) και control (2) -Μνήµη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

Αρχιτεκτονική Υπολογιστών Ι

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

Τρόποι Διευθυνσιοδότησης

Αρχιτεκτονική Υπολογιστών. Data. Κείμενο. Βίντεο. Αριθμοί Εικόνες. Ήχοι

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

Τεχνολογίες ημιαγωγών. Chapter 2 Instructions: Language of the Computer 1

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

Κεφάλαιο 2 Εντολές Η γλώσσα της Μηχανής (Instructions Language of the Computer)

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.

Αρχιτεκτονική υπολογιστών

Chapter 3. Αριθμητική Υπολογιστών. Έβδομη (7 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Παραδείγματα Assembly (Μέρος

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

ΠΛΕ- 027 Μικροεπεξεργαστές

Τελική Εξέταση, Απαντήσεις/Λύσεις

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

Chapter 3 Αριθμητική Υπολογιστών

Οι υπολογιστές στον πραγματικό κόσμο

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

-Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

-Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

Προτεινόμενες Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213 & Αποτελέσματα

Περιγραφή αρχιτεκτονικής MIPS MIPS assembly (1o και 2o μέρος)

Αρχιτεκτονική Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

2 η Ενδιάμεση Εξέταση Λύσεις/Απαντήσεις

Κεφάλαιο 3. Αριθμητική Υπολογιστών Review. Hardware implementation of simple ALU Multiply/Divide Real Numbers

Οργάνωση Υπολογιστών

ΠΛΕ- 027 Μικροεπεξεργαστές 5ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση ενός κύκλου

Απλός επεξεργαστής (Επανάληψη)

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Πολλαπλασιασμός και Διαίρεση Ακεραίων

Data-Level Parallelism Linking & Loading

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Σχεδίαση μονάδας ελέγχου επεξεργαστή

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

Δείγμα Τελικής Εξέτασης στο ΗΜΥ213. Διδάσκοντας: Γιώργος Ζάγγουλος

Αρχιτεκτονικές Συνόλου Εντολών

Εντολές: H γλώσσα μηχανής

Οργάνωση Υπολογιστών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy

Αρχιτεκτονική Υπολογιστών

Σχεδίαση της Διόδου Δεδομένων

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

Αρχιτεκτονική Υπολογιστών MIPS ISA

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 8: Μία Απλή Υλοποίηση του MIPS σε Έναν Κύκλο Ρολογιού ανά Εντολή

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

Συναρτήσεις-Διαδικασίες

Προγραμματισμός Ι (ΗΥ120)

Αρχιτεκτονικές Συνόλου Εντολών

Κεφάλαιο 4. Ο επεξεργαστής. Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση

Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής. Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 3 ο ΜΕΔ απλού κύκλου

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Αρχιτεκτονικές Συνόλου Εντολών

Ενδιάμεση Β205. Κεφ. 1-2, Παράρτημα Α Εργαστήρια Εργασίες Ενδιάμεση του 2014 Όχι διάλεξη την Τρίτη (Προετοιμασία)

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 3: Προσπελάσεις Μνήμης στον MIPS. Μανόλης Γ.Η. Κατεβαίνης

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Transcript:

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 3 Εντολές του MIPS (2) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Y

Παράδειγμα (συνέχεια από προηγ. διάλεξη) $s3 = &A[0] = 0x0001080 &A[8] = 0x00010A0 Α[0] Α[1] Α[2] Α[3] Α[4] Α[5] Α[6] Α[7] Α[8] Α[9]. Κώδικας C: Απόσταση (Offset) g = h + A[8]; Το g είναι στον $s1, το h στον $s2, και η διεύθυνση (βάση) του A στον $s3 Μεταγλωττισμένος κώδικας MIPS: Η θέση 8 βρίσκεται 32 bytes μετά την αρχή του Α 4 bytes ανά λέξη lw $t0, 32($s3) # load word add $s1, $s2, $t0 2

Δεκαεξαεδικό (hex) Βάση 16 Περιεκτική αναπαράσταση 4 bits για κάθε hex ψηφίο 0 0000 4 0100 8 1000 c 1100 1 0001 5 0101 9 1001 d 1101 2 0010 6 0110 a 1010 e 1110 3 0011 7 0111 b 1011 f 1111 Παράδειγμα: eca8 6420 1110 1100 1010 1000 0110 0100 0010 0000 Οργάνωση και Σχεδίαση Υπoλογιστών 3

Εντολές για Bytes/Halfwords MIPS byte/halfword load/store Συνήθως για διαχείριση συμβολοσειρών (strings) lb rt, offset(rs) ; Επέκταση προσήμου σε 32 bits στον rt lh rt, offset(rs) lbu rt, offset(rs) ; Επέκταση 0 σε 32 bits στον rt lhu rt, offset(rs) sb rt, offset(rs) ;Αποθηκεύει το δεξιότερο byte/halfword sh rt, offset(rs) 4

Παραδείγματα εντολών μεταφοράς δεδομένων Ας θεωρήσουμε τις παρακάτω θέσεις μνήμης και τα περιεχόμενα τους Έστω ότι αρχικά: $s0 = 0xAF109043 $s1 = 0x10008100 Επίσης ο MIPS είναι Little endian. Εκτελείται η εντολή: lw $s0, 4($s1) Ποια ή νέα τιμή του $s0? ADDRESS 0x100080A2 0x100080A3 0x10008104 0x10008105 0x10008106 0x10008107 Διεύθυνση Πρόσβασης : $s1 + (4) 10 = 0x10008104 Φορτώνουμε 4 bytes ξεκινώντας από την διεύθυνση 0x10008104 Τελικά $s0 = 0x80331101 DATA 0x21 0x00 0x01 0x11 0x33 0x80 Εκτελείται η εντολή: lw $s0, 5($s1) ΛΑΘΟΣ (run-time error) Πρόσβαση σε μη ευθυγραμμισμένη διεύθυνση (μη πολλαπλάσια του 4). 5

Παραδείγματα εντολών μεταφοράς δεδομένων Ας θεωρήσουμε τις παρακάτω θέσεις μνήμης και τα περιεχόμενα τους Έστω ότι αρχικά: $s0 = 0xAF109043 $s1 = 0x10008100 Επίσης ο MIPS είναι Big endian. Εκτελείται η εντολή: lb $s0, 7($s1) Ποια ή νέα τιμή του $s0? ADDRESS 0x100080A2 0x100080A3 0x10008104 0x10008105 0x10008106 0x10008107 DATA 0x21 0x00 0x01 0x11 0x33 0x80 Διεύθυνση Πρόσβασης : $s1 + (7) 10 = 0x10008107 Φορτώνουμε 1 byte από την διεύθυνση 0x10008107. Πάντα στο Least Significant Byte του καταχωρητή. Κάνουμε επέκταση προσήμου για να γεμίσουμε (fill) τα 3 MSB του $s1 Τελικά $s0 = 0xFFFFFF80 6

Προχωρημένες Εντολές Φόρτωσης Δεδομένων Έστω ότι αρχικά: $t0 = 0 $t1 = 0xFFFFFF O MIPS είναι Little Endian (lwl, lwr) ADDRESS DATA 0 0x01 1 0x02 2 0x03 3 0x04 4 0xAA 5 0xBB 6 0xCC 7 0xDD $t1: 0xFF 0xFF 0xFF 0xFF lwl $t1, 1($t0) # Load Word Left $t1: 0xFF 0xFF 0xFF 0xFF lwr $t1, 6($t0) # Load Word Right $t1: 0x02 0x01 0xFF 0xFF $t1: 0xFF 0xFF 0xDD 0xCC lwl και lwr είναι πραγματικές εντολές Τα bytes του καταχωρητή που δεν τα πειράζουμε, παραμένουν τα ίδια H διεύθυνση δεν χρειάζεται να είναι πολλ/σιο του 4 7

MIPS Εντολές μορφής R op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits Πεδία εντολής op: opcode (κώδικας λειτουργίας) rs: τελεστέος προέλευσης 1 ου καταχωρητή rt: τελεστέος προέλευσης 2 ου καταχωρητή rd: τελεστέος καταχωρητή προορισμού shamt: ποσότητα ολίσθησης (shift amount) (00000 για τώρα) funct: κωδικός συνάρτησης (function code) 8

Παράδειγμα μορφής R op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits add $t0, $s1, $s2 op $s1 $s2 $t0 0 add 0 17 18 8 0 32 000000 10001 10010 01000 00000 100000 00000010001100100100000000100000 2 = 02324020 16 9

MIPS Εντολές μορφής I op rs rt σταθερά ή διεύθυνση 6 bits 5 bits 5 bits 16 bits Άμεσες αριθμητικές εντολές ή εντολές μεταφοράς δεδομένων rt: τελεστέος καταχωρητή προέλευσης ή προορισμού Σταθερά: 2 15 έως +2 15 1 Διεύθυνση: προστίθεται απόσταση (offset) στη διεύθυνση βάσης που βρίσκεται στο rs 10

Πεδία του MIPS Σχεδιαστική Αρχή : Η καλή σχεδίαση απαιτεί καλούς συμβιβασμούς Η ύπαρξη διαφορετικών μορφών περιπλέκει την αποκωδικοποίηση αλλα επιτρέπει ομοιομορφία στο μήκος των εντολών. 11

Λογικές πράξεις Εντολές για χειρισμό ακεραίων σε επίπεδο bit Operation C Java MIPS Shift left << << sll Shift right >> >>> srl Bitwise AND & & and, andi Bitwise OR or, ori Bitwise NOT ~ ~ nor Χρήσιμες για εξαγωγή ή εισαγωγή ομάδων από bits σε μια λέξη. 12

Πράξεις ολίσθησης (shift) op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits shamt: ποσότητα (θέσεις) ολίσθησης Αριστερή ολίσθηση Μεταφορά αριστερά και γέμισμα κενών με 0 sll κατά i bits πολλαπλασιάζει με 2 i Δεξιά ολίσθηση Μεταφορά δεξιά και γέμισμα κενών με πρόσημο (sra) srl κατά i bits διαιρεί με 2 i (μόνο απρόσημα) 13

Πράξη AND Χρήσιμη ως μάσκα ("καλύπτει" κάποια bits στη λέξη) Επέλεξε κάποια bits, κάνε τα υπόλοιπα 0 and $t0, $t1, $t2 $t2 $t1 $t0 0000 0000 0000 0000 0000 1101 1100 0000 0000 0000 0000 0000 0011 1100 0000 0000 0000 0000 0000 0000 0000 1100 0000 0000 14

Πράξη OR Χρήσιμη για να συμπεριλάβει κάποια bits σε μια λέξη Κάνε κάποια bits 1, άσε τα υπόλοιπα ως έχουν or $t0, $t1, $t2 $t2 $t1 $t0 0000 0000 0000 0000 0000 1101 1100 0000 0000 0000 0000 0000 0011 1100 0000 0000 0000 0000 0000 0000 0011 1101 1100 0000 15

Οργάνωση και Σχεδίαση Υπoλογιστών Άμεσοι Τελεστέοι Σταθερά δεδομένα που εμφανίζονται σε μια εντολή addi $s3, $s3, 4 Δεν υπάρχει εντολή για άμεση αφαίρεση Απλά χρησιμοποιείστε μια αρνητική σταθερά. addi $s2, $s1, -1 Ο καταχωρητής $0 του MIPS ($zero) είναι η σταθερά 0 Η τιμή του καταχωρητή αυτού δε μπορεί να διαγραφεί/μεταβληθεί Χρήσιμος για πολλές πράξεις π.χ., μετακίνηση δεδομένων σε άλλο καταχωρητή add $t2, $s1, $zero 16

Σχεδιαστική Αρχή Κάντε τη συνηθισμένη περίπτωση γρήγορη. Μικρές σταθερές είναι συνήθεις Με τη χρήση άμεσων τελεστέων αποφεύγουμε τη χρήση μιας επιπλέον εντολής load. 17

Σταθερές των 32-bit Οι περισσότερες σταθερές είναι μικρές Άμεσοι τελεστέοι των 16-bit επαρκούν Για σταθερές των 32-bit: lui rt, constant (Load Upper Immediate) Αντιγράφει τα ανώτερα 16 bits της σταθεράς constant στα αριστερά 16 bits του rt Κάνει 0 τα άλλα 16 bits του rt και μετά μπορούμε να προσθέσουμε στο rt τα υπόλοιπα 16 bits του constant. ;store the 32-bit constant 0xAABBCCDD to $s0 addi $s0, $0, $0 ; $s0 = 0; lui $s0, 0xAABB ; $s0 = 0xAABB0000 ori $s0, $s0,0xccdd ; $s0 = 0xAABBCCDD 18

Εντολές διακλάδωσης (Ι) Μετάβαση σε άλλη εντολή αν η συνθήκη είναι αληθής Διαφορετικά, το πρόγραμμα συνεχίζει στην επόμενη εντολή beq rs, rt, L1 αν (rs == rt) πήγαινε στην εντολή με ετικέτα L1; bne rs, rt, L1 αν (rs!= rt) πήγαινε στην εντολή με ετικέτα L1 j L1 διακλάδωση χωρίς συνθήκη πήγαινε στην εντολή με ετικέτα L1 19

Μεταγλώττιση εντολών if κώδικας C : if (i==j) f = g+h; else f = g-h; f, g,h στους $s0, $s1, Μεταγλωττισμένος κώδικας MIPS: bne $s3, $s4, Else add $s0, $s1, $s2 j Exit Else: sub $s0, $s1, $s2 Exit: Ο assembler (συμβολομεταφραστής) υπολογίζει τις διευθύνσεις 20

Κώδικας C: int save[100]; Μεταγλώττιση βρόχων while (save[i] == k) i++; i στον $s3, k στον $s5, διεύθυνση του save στον $s6 Μεταγλωττισμένος κώδικας MIPS: Loop: sll $t1, $s3, 2 # $t1=4*i add $t1, $t1, $s6 lw $t0, 0($t1) # $t0=save[i] bne $t0, $s5, Exit addi $s3, $s3, 1 j Loop Exit: # $t1=&save[i] 21

Εντολές διακλάδωσης (2) Θέσε το αποτέλεσμα σε 1 αν μια συνθήκη είναι αληθής, αλλιώς θέσε το σε 0 slt rd, rs, rt if (rs < rt) rd = 1; else rd = 0; slti rt, rs, constant if (rs < constant) rt = 1; else rt = 0; Σε συνδυασμό με τις beq, bne slt $t0, $s1, $s2 # if ($s1 < $s2) $t0=1 bne $t0, $zero, L # branch to L Αντίστοιχη ψευδο-εντολή blt $s1, $s2, L 22

Σχεδίαση εντολών διακλάδωσης Γιατί δεν υπάρχουν οι πραγματικές εντολές blt, bge, κτλ? Ο υπολογισμός του <,, είναι πιο αργός από τον υπολογισμό του =, Ο συνδυασμός σύγκρισης με διακλάδωση χρειάζεται περισσότερη δουλειά ανά εντολή και απαιτεί πιο αργό ρολόι. Αυτό καθυστερεί όλες τις εντολές! beq και bne είναι οι πιο συνήθεις εντολές Αυτό είναι παράδειγμα συμβιβασμού (tradeoff) 23

Ψευδοεντολές Οι περισσότερες εντολές του συμβολομεταφραστή έχουν μία προς μία αντιστοιχία με εντολές της γλώσσας μηχανής. Ψευδοεντολές: δεν είναι μέρος του συνόλου εντολών (ISA) move $t0, $t1 add $t0, $zero, $t1 blt $t0, $t1, L slt $at, $t0, $t1 bne $at, $zero, L $at ($1): δεν μπορεί να χρησιμοποιηθεί από τον χρήστη, παρά μόνο από τον συμβολομεταφραστή 24

Προσημασμένο / Απρόσημο Προσημασμένη σύγκριση: slt, slti Απρόσημη σύγκριση: sltu, sltui Παράδειγμα: $s0 = 1111 1111 1111 1111 1111 1111 1111 1111 $s1 = 0000 0000 0000 0000 0000 0000 0000 0001 slt $t0, $s0, $s1 # signed 1 < +1 $t0 = 1 sltu $t0, $s0, $s1 # unsigned +4,294,967,295 > +1 $t0 = 0 25

Διευθυνσιοδότηση διακλαδώσεων Οι εντολές διακλαδώσεων προσδιορίζουν: Opcode, δύο καταχωρητές, διεύθυνση προορισμού Μορφή-Ι Ο προορισμός είναι συνήθως κοντά Είτε πιο μπροστά είτε πιο πίσω Η address δείχνει αριθμό 32-bit words, και όχι bytes op rs rt constant or address 6 bits 5 bits 5 bits 16 bits Διευθυνσιοδότηση σχετική ως προς PC Διεύθυνση προορισμού = (PC+4) + constant 4 PC είναι η διεύθυνση της εντολής διακλάδωσης 26

Διευθυνσιοδότηση αλμάτων Ο προορισμός ενός άλματος (j ή jal) μπορεί να είναι οπουδήποτε στο κείμενο Χρειάζεται ολόκληρη η διεύθυνση στην εντολή Μορφή-J op address 6 bits 26 bits (Ψευδο)απευθείας διευθυνσιοδότηση άλματος Διεύθυνση προορισμού = {PC 31 28, address 4} 27

Παράδειγμα Το Loop αρχίζει στη διεύθυνση 0x80000 Loop: sll $t1, $s3, 2 80000 0 0 19 9 2 0 add $t1, $t1, $s6 80004 0 9 22 9 0 32 lw $t0, 0($t1) 80008 35 9 8 0 bne $t0, $s5, Exit 8000C 5 8 21 2 addi $s3, $s3, 1 80010 8 19 19 1 j Loop 80014 2 20000 Exit: 80018 28

Μακρινές διακλαδώσεις Αν ο προορισμός μια διακλάδωσης είναι τόσο μακρυά ώστε 16 bit δεν είναι αρκετά για την απόσταση, τότε ο assembler μεταβάλει τον κώδικα Παράδειγμα # L1 more than 2 15-1 words away beq $s0,$s1, L1 bne $s0,$s1, L2 j L1 L2: 29