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

Σχετικά έγγραφα
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

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

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

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

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;

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

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

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

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

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

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

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

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

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

Αναδρομή. ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 6. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

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

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

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

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

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

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

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

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

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

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

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

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

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

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

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

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

MIPS functions and procedures

Data-Level Parallelism Linking & Loading

Χρονισμός και Απόδοση Υπολογιστικών Συστημάτων

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

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

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

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

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

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

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

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

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

Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1. Εργαστήριο 6. Εαρινό Εξάμηνο

Διάλεξη 17: Δυαδικά Δέντρα. Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

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

AΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ (5 ο εξάμηνο) ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΞΕΤΑΣΗ (ΦΘΙΝΟΠΩΡΟ 2007) ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ 30 ΛΕΠΤΑ

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

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

Απόδοση Υπολογιστικών Συστημάτων

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Διδάσκων: Κωνσταντίνος Κώστα

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

Ενότητες 3 & 4: Δένδρα, Σύνολα & Λεξικά Ασκήσεις και Λύσεις

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

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

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

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

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

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

Δηµοσθένης Σταµάτης Τµήµα Πληροφορικής ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΕΝΤΡΑ (TREES) B C D E F G H I J K L M

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

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

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

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

Θέµατα Φεβρουαρίου

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

Μεταγλωττιστές Βελτιστοποίηση

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

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

Δρ. Παναγιώτης Μ. Παπάζογλου Επίκουρος Καθηγητής ΤΕΙ Λαμίας. Διδακτικό βοήθημα γρήγορης μελέτης για τον προγραμματισμό του μικροεπεξεργαστή MIPS 32bit

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Μεταγλωττιστές Βελτιστοποίηση

Δομημένος Προγραμματισμός (ΤΛ1006)

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ EPL035: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ

Διάλεξη 17: O Αλγόριθμος Ταξινόμησης HeapSort

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

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

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

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y» Σάββατο, 31 Οκτωβρίου 2015 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 150 ΛΕΠΤΑ ΘΕΜΑ 1. Κώδικας MIPS assembly (10+10+10+10 = 40 μονάδες) H συνάρτηση func που ορίζουμε παρακάτω είναι γραμμένη σε assembly του επεξεργαστή MIPS. H άσκηση σας ζητάει τα εξής: a. Γράψτε τον αντίστοιχο κώδικα σε C. Ο κώδικάς σας θα πρέπει να συμπεριλαμβάνει και τον ορισμό της συνάρτησης func, δηλ. τον header και τις παραμέτρους με τους τύπους των παραμέτρων. Για να πάρετε όλους τους βαθμούς του ερωτήματος, ο κώδικάς σας θα πρέπει να χρησιμοποιεί δομές της C και όχι να είναι μια απλή 1-1 μετάφραση των εντολών της assembly σε C. Απαγορεύεται επίσης η χρήση στον κώδικά σας της εντολής goto. b. Περιγράψτε με μια πρόταση τι ακριβώς κάνει αυτός ο παρακάτω κώδικας. Συγκεκριμένα, ποια είναι η τιμή θα επιστραφεί στον καταχωρητή $v0; Η μόνη απάντηση που θα γίνει δεκτή θα πρέπει να βρίσκεται μέσα στο κουτί. c. Υποθέστε ότι οι εντολές load και οι εντολές store χρειάζονται 2 κύκλους μηχανής, οι αριθμητικές εντολές και οι εντολές jump, jr, jal 1 κύκλο μηχανής, ενώ οι εντολές διακλάδωσης χρειάζονται 1 κύκλο εάν δεν κάνουν άλμα και 2 κύκλους εάν κάνουν άλμα. Για αρχική τιμή του καταχωρητή $a2 = (2*k + αρχική τιμή του $a1) να υπολογίσετε το χρόνο εκτέλεσης της συνάρτησης func σε κύκλους μηχανής. Θεωρείστε ότι k 0. d. Ποιο το μέσο CPI για όλο το πρόγραμμα; func: Exit: bge $a1, $a2, Exit sll $t1, $a1, 2 add $t1, $a0, $t1 sll $t2, $a2, 2 add $t2, $a0, $t2 lw $t3, 0($t1) lw $t4, 0($t2) sw $t3, 0($t2) sw $t4, 0($t1) addi $a1, $a1, 1 addi $a2, $a2, -1 j func jr $ra

Λύση a. void func (int *array, int A1, int A2) { int temp; while (A1 < A2) { temp = array[a1]; /* swap array[a1] and array[a2] */ array[a1] = array[a2]; array[a2]= temp; A1++; A2--; } } b) H func αντιστρέφει τα στοιχεία του πίνακα array από το $a1 μέχρι και το $a2. c) func: Exit: bge $a1, $a2, Exit 3T/2NT* sll $t1, $a1, 2 1 add $t1, $a0, $t1 1 sll $t2, $a2, 2 1 add $t2, $a0, $t2 1 lw $t3, 0($t1) 2 lw $t4, 0($t2) 2 sw $t3, 0($t2) 2 sw $t4, 0($t1) 2 addi $a1, $a1, 1 1 addi $a2, $a2, -1 1 j func 1 jr $ra 1 Η συνάρτηση εκτελεί ένα loop με κόστος 17, ενώ όταν ισχύει η συνθήκη τερματισμού εκτελείται το σκιαγραφημένο τμήμα με κόστος 4. Για είσοδο Α1, Α2 το κόστος είναι ceiling((α2-α1) / 2)*17 +4. Για Α2 - Α1 = 2*k προκύπτει : Χρόνος Εκτέλεσης = k*17 +4 κύκλοι μηχανής. *bge pseudo-instruction (full credit for cost 2T / 1NT) d) Το κόστος είναι k*17 +4 κύκλοι μηχανής. Εκτελούνται ceiling((α2-α1) / 2)*12 +2 = ((2k)/2)*12 + 2 = 12k + 2 εντολές. Άρα CPI average = 17κ+4 12k+2 ΘΕΜΑ 2. Αριθμητική Υπολογιστών (13+12=25 μονάδες)

a. Μπορεί κάθε ακέραιος αριθμός 32-bit να αναπαρασταθεί από έναν float στο IEEE standard 754 χωρίς απώλεια ακρίβειας; Εάν πιστεύετε πως ναι, θα πρέπει να το δείξετε με κάποιο λογικό επιχείρημα. Εάν πιστεύετε πως όχι, θα πρέπει να δώσετε ένα αντιπαράδειγμα. Η απάντηση είναι όχι. Για παράδειγμα, ο ακέραιος αριθμός 2 30 + 1 δεν μπορεί να αναπαρασταθεί χωρίς λάθος από έναν αριθμό απλής ακρίβειας. b. Έστω οι παρακάτω αριθμοί κινητής υποδιαστολής απλής ακρίβειας σύμφωνα με το IEEE standard 754: float X1 = 1,10 * 2 45 float X2 = 1,01 * 2 25 float X3 = 100 float X4 = 1,0 * 2 60 Με ποια σειρά θα πρέπει να υπολογισθεί το άθροισμα των αριθμών αυτών για να πετύχουμε την μεγαλύτερη δυνατή ακρίβεια (ή αντίστοιχα να έχουμε το μικρότερο δυνατόν λάθος); H καλύτερη σειρά είναι να προσθέσουμε τους αριθμούς με αύξουσα σειρά: (((X3+X2) + X1) + X4). Με αυτόν τον τρόπο, οι αριθμοί που προσθέτουμε κάθε φορά θα είναι όσο το δυνατόν πιο κοντά μεταξύ τους και ο μικρότερος από αυτούς θα συνεισφέρει στην πρόσθεση. Για παράδειγμα, θα ήταν εντελώς άστοχο να προσθέταμε το X3 και το X4 αμέσως, γιατί η συνεισφορά του Χ3 θα χανόταν. ΘΕΜΑ 3 (13+12+10 = 35 μονάδες) Ένα δυαδικό δέντρο είναι μία δομή δεδομένων που αποτελείται από ένα σύνολο κόμβων που συνδέονται από ακμές. Ορίζεται αναδρομικά ως εξής: Ένα δυαδικό δένδρο είναι είτε κενό είτε αποτελείται από μια ρίζα (root), δηλαδή ένα κόμβο στον οποίο δεν καταλήγουν αλλά μόνο ξεκινούν ακμές, και μέχρι 2 υποδέντρα Τ 1, Τ 2 το καθένα ξεχωριστό από τα άλλα και από τη ρίζα. Υπάρχει μια ακμή από τη ρίζα στις ρίζες των Τ 1, Τ 2.

Ο βαθμός (degree) ενός κόμβου είναι ο αριθμός των παιδιών του και είναι 0, 1, ή 2. H άσκηση σας ζητάει να απαντήσετε στα παρακάτω ερωτήματα: A B F C E G D a. Να γράψετε την αναδρομική συνάρτηση count_nodes που υπολογίζει τον αριθμό των κόμβων ενός δυαδικού δέντρου: count _ nodes( root 0, if R NULL * R) 1 count _ nodes( R left ) count _ nodes( R right), if R NULL b. Υποθέστε ότι υλοποιούμε την συνάρτηση count_nodes σε MIPS assembly χρησιμοποιώντας αναδρομή. Ποιοί είναι οι καταχωρητές που θα πρέπει οπωσδήποτε να σώζονται στην στοίβα σε κάθε κλήση της συνάρτησης count_nodes; Ζητάμε τους ελάχιστους καταχωρητές που θα πρέπει να σώζονται ώστε η αναδρομή να εκτελεσθεί σωστά. Οι καταχωρητές $a0 και $ra πρέπει να σώζονται οπωσδήποτε στην στοίβα σε κάθε κλήση της συνάρτησης count_nodes. Ο καταχωρητής $a0 θα περιέχει το όρισμα εισόδου R->right και το όρισμα εισόδου R->left. Δεν χρειάζεται επιπλέον καταχωρητής $a1. c. Ποιό είναι το μέγιστο μέγεθος της στοίβας σε bytes που απαιτείται για την εκτέλεση της αναδρομής count_nodes(root *R) στην γενική περίπτωση ενός δυαδικού δέντρου. Να βρεθεί το μέγιστο μέγεθος της στοίβας για το συγκεκριμένο δέντρο που σας δίδεται στην εικόνα. Μέγιστο μέγεθος στοίβας = Υψος του δένδρου * #Αριθμός καταχωρητών * 4(bytes). To ύψος του δένδρου ορίζεται ως το πιο μακρύ μονοπάτι από την ρίζα σε κάποιο φύλλο του δένδρου.

Στο συγκεκριμένο παράδειγμα το μέγιστο μέγεθος στοίβας είναι 2*4*4 = 32 bytes.