Εντολές του MIPS (2)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Data-Level Parallelism Linking & Loading

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

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

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

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

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

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

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

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

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

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

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

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

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

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

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

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

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

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

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

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

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

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

6. Επιστροφή ελέγχου στο σημείο εκκίνησης

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

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

Transcript:

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

Παράδειγμα (συνέχεια από προηγ. διάλεξη) $s3 = &A[0] = 0x0001080 Κώδικας C: g = h + A[8]; Α[0] Α[1] Α[2] Α[3] Α[4] Α[5] Α[6] Α[7] Α[8] Α[9]. Το g είναι στον $s1, το h στον $s2, και η διεύθυνση (βάση) του A στον $s3 Μεταγλωττισμένος κώδικας MIPS: Η θέση 8 βρίσκεται 32 bytes μετά την αρχή του Α 4 bytes ανά λέξη lw $t0, 32($s3) add $s1, $s2, $t0 Απόσταση (Offset) &A[8] = 0x00010A0 # load word 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 6420 eca8 : Παράδειγμα 1110 1100 1010 1000 0110 0100 0010 0000 Εισαγωγή στην Οργάνωση και Σχεδίαση 3

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

Παραδείγματα εντολών μεταφοράς δεδομένων Ας θεωρήσουμε τις παρακάτω θέσεις μνήμης και τα περιεχόμενα τους Έστω ότι αρχικά: $s0 = 0xAF109043 $s1 = 0x10008100 Επίσης ο MIPS είναι Big endian. Εκτελείται η εντολή: lw $s0, 4($s1) Ποια ή νέα τιμή του $s0? ADDRESS 0x100080A2 0x100080A3 0x10008104 0x10008105 0x10008106 0x10008107 Διεύθυνση Πρόσβασης : $s1 + (4) 10 = 0x10008104 Φορτώνουμε 4 bytes ξεκινώντας από την διεύθυνση 0x10008104 Τελικά $s0 = 0x01113380 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

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 για ( τώρα ( code funct: κωδικός συνάρτησης (function 7

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

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

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

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

( 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 Δεξιά ολίσθηση Μεταφορά δεξιά και γέμισμα κενών με πρόσημο ( απρόσημα srl κατά i bits διαιρεί με 2 i (μόνο 12

Πράξη 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 13

Πράξη 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 14

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

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

Σταθερές των 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, 0xCCDD ; $s0 = 0xAABBCCDD 17

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

Μεταγλώττιση εντολών 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ο διευθύνσειςτιςυπολογίζει 19

Κώδικας 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] 20

Εντολές διακλάδωσης (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 21

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

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

Προσημασμένο / Απρόσημο Προσημασμένη σύγκριση: 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 24

Διευθυνσιοδότηση διακλαδώσεων Οι εντολές διακλαδώσεων προσδιορίζουν: 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 είναι η διεύθυνση της εντολής διακλάδωσης 25

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

Παράδειγμα Το 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 80008 ( 0($t1 $t0, 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 27

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

Περίληψη διευθυνσιοδότησης 29

Περίληψη διευθυνσιοδότησης 30

Διαδικασίες (procedures) Γνωστές και σαν υπορουτίνες (subroutines) Τι πρέπει να προσέξουμε στις διαδικασίες (υπορουτίνες)? 1. Η εμβέλεια των μεταβλητών που ορίζονται μέσα στις διαδικασίες (automatic variables) περιορίζεται στο σώμα των διαδικασιών αυτών 2. Οι μεταβλητές αυτές (automatic variables), κρύβουν τον ορισμό των καθολικών μεταβλητών (global variables) με τις οποίες έχουν το ίδιο όνομα. int x; Δεν μπορεί να προσπελασθεί μέσα στην func() void func(int a) { int x; int y;. Έγκυρες μόνο μέσα στην func() } 31