Εργαστήριο 3. Εαρινό Εξάμηνο

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

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:

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

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

Εργαστήριο 5. Εαρινό Εξάμηνο

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

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

Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής. Αρχιτεκτονική Υπολογιστών. 3ο Μάθημα

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

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ

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;

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

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

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

Προγραµµατισµός Ι Εργαστήριο 13ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 13 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Προγραµµατισµός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

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

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

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

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

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

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

Προγραμματισμός Ι Εργαστήριο 5ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 11 Προώθηση (Forwarding)

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Νο: 5 Αριθμητικές Εντολές

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσμία: Τετάρτη 9/11/2016, 21:00

Διάλεξη 12 Καθυστερήσεις (Stalls) Εκκενώσεις Εντολών (Flushing)

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

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

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

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Προγραμματισμός Ι Εργαστήριο 9ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 9 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

ΚΕΦΑΛΑΙΑ 3 & 9 (ΠΙΝΑΚΕΣ)

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

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

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

Διαδικασιακός Προγραμματισμός

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

Διάλεξη 12 Καθυστερήσεις (Stalls)

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

Διοχέτευση (Pipeline)

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

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

Προγραµµατισµός Ι ΕΡΓΑΣΤΗΡΙΟ 5 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΜΕΣΟΛΟΓΓΙ ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ ΕΡΓΑΣΤΗΡΙΟ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ Διαδικασία Κατάρτησης Επιχειρηματικού Σχεδίου

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

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

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

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

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

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/10, 23:59

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

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

Πανεπιστήµιο Θεσσαλίας

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

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

Προγραµµατισµός Ι Εργαστήριο 3ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 3 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

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

Προγραμματισμός Ι Εργαστήριο 8ο Ακαδ. Έτος ΕΡΓΑΣΤΗΡΙΟ 8 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Transcript:

Τομέας Υλικού και Αρχιτεκτονικής Υπολογιστών ΗΥ134 - Εισαγωγή στην Οργάνωση και Σχεδίαση Η/Υ 1 Εργαστήριο 3 Εαρινό Εξάμηνο 2012-2013 Στό χόι τόυ εργαστηρι όυ Εντολές προσπέλασης της μνήμης Χρήση πινάκων Χρη ση μνη μης Τα δεδομένα αποθηκεύονται σε ξεχωριστό τμήμα μνήμης το οποίο χρησιμοποιείται αποκλειστικά για αυτό το σκοπό. Γι αυτό τον λόγο η δήλωση του πίνακα, που θα χρησιμοποιήσετε, πρέπει να γίνει στο τμήμα.data. Ο τρόπος δήλωσης του πίνακα και η σύνταξη των εντολών load (lw) και store (sw), οι οποίες χρησιμοποιούνται για την μεταφορά δεδομένων μεταξύ μνήμη και καταχωρητή, εξηγούνται παρακάτω. Δήλωση πίνακα.data # στο τμήμα.data πρέπει να δηλωθεί ο πίνακας Name_array:.space N # Name_array: δώστε ότι όνομα # θέλετε στον πίνακα #.space Χ: δηλώνει ότι θέλουμε να # κρατήσουμε χώρο ίσο με N bytes για # τον πίνακα Name_array Εντολή load (lw) Η εντολή αυτή αποθηκεύει δεδομένα σε καταχωρητή, τα οποία έχει πάρει από συγκεκριμένη διεύθυνση της μνήμης. Σύνταξη: lw Rt, Address(Rs) Σημασία: Rt=Memory[Address+Rs] [1]

Προσοχή: όπου Rt, Rs είναι καταχωρητές και όπου Address είναι το όνομα του πίνακα (label) που δώσατε στο τμήμα.data. Με βάση την παραπάνω δήλωση (στο τμήμα.data) θα έπρεπε να γράψουμε: lw Rt, Name_array(Rs) Από την σύνταξη της εντολής αυτής γίνεται κατανοητό ότι ζητάμε τα δεδομένα της μνήμης στην διεύθυνση [Name_array+Rs] και τα οποία θα αποθηκευτούν στον καταχωρητή Rt. Εντολή store (sw) Η εντολή αυτή αποθηκεύει δεδομένα από έναν καταχωρητή σε συγκεκριμένη διεύθυνση στη μνήμη. Σύνταξη: sw Rt, Address(Rs) Σημασία: Memory[Address+Rs]=Rt Ο τρόπος λειτουργίας είναι παρόμοιος με την εντολή lw(load word). Η λειτουργία που υλοποιεί αυτή η εντολή είναι: Αποθήκευσε τα περιεχόμενα του καταχωρητή Rt στην μνήμη και συγκεκριμένα στην διεύθυνση [Address+Rs]. Η διάφορα με την πρώτη εντολή είναι ότι η sw αποθηκεύει δεδομένα στην μνήμη ενώ η lw διαβάζει τα δεδομένα της μνήμης. Ευθυγρα μμιση Όπως γνωρίζετε από την θεωρία ο MIPS είναι ένας 32bit επεξεργαστής. Αυτό συνεπάγεται ότι όλοι οι καταχωρητές του έχουν μέγεθος 32 bits ή αλλιώς 4 bytes. Ορίζουμε σαν word τα δεδομένα μεγέθους 4 bytes τα οποία χωράνε σε έναν register. Όταν ορίζουμε έναν πίνακα στην μνήμη με την εντολή.space καθορίζουμε το μέγεθος του ίσο με έναν αριθμό από bytes όπως παρουσιάστηκε πριν. Εφόσον όμως τα στοιχεία που αποθηκεύονται σε αυτόν θα είναι μεγέθους 4 bytes το καθένα, πρέπει να καθορίσετε το μέγεθος του πίνακα να είναι πολλαπλάσιο του 4. Έτσι το πρώτο στοιχείο του πίνακα βρίσκεται στα bytes 0 έως 3. Αν θέλετε να το κάνετε load θα πρέπει να συντάξετε την εντολή lw Rt, Address(Rs) με τον Rs να έχει περιεχόμενο 0. Αν τώρα θέλετε το δεύτερο στοιχείο του πίνακα αυτό βρίσκεται στα bytes 4 έως 7. Για να το κάνετε load θα πρέπει να γράψετε την ίδια εντολή αλλά ο Rs θα πρέπει να έχει περιεχόμενο τον αριθμό 4. Σημείωση: Όταν ορίζετε έναν πίνακα πρέπει να δηλώνετε και τι μέγεθος θα έχουν τα δεδομένα που θα αποθηκεύονται σε αυτόν. Αυτό γίνεται με την εντολή.align n όπου n έναν ακέραιος που θα δώσετε εσείς. Η εντολή αυτή σημαίνει ότι τα στοιχεία του πίνακα έχουν μέγεθος 2 n. Έτσι για έναν πίνακα 10 θέσεων με λέξεις 4 bytes πρέπει να συντάξετε την εντολή: [2]

.align 2 label:.space 40 #μέγεθος στοιχείου 4 bytes #μέγεθος πίνακα 40 bytes = 10 στοιχεία Ένα παρα δειγμα χρη σης μνη μης.data.align 2 vector:.space 24 # λέξεις 4 bytes # πίνακας 6 θέσεων.text # li $t1,4 # ένας τρόπος πρόσβασης στο 2 ο στοιχείο lw $t0,vector($t1) # του πίνακα # la $t2,vector lw $t3,4($t2) # ακόμα ένας τρόπος για πρόσβαση στο 2 ο # στοιχείο του πίνακα # la $t2,vector addi $t2,$t2,4 lw $t0,0($t2) # ακόμα ένας τρόπος για πρόσβαση στο 2 ο # στοιχείο του πίνακα Για το επόμενο εργαστήριο έχετε να υλοποιήσετε την παρακάτω εργαστηριακή άσκηση. Την ώρα του εργαστηρίου θα εξετασθείτε προφορικά πάνω στον κώδικα που θα παραδώσετε. [3]

Άσκηση 1 (10 μόνα δες) Να αναπτύξετε ένα πρόγραμμα που θα ζητάει αρχικά από τον χρήστη το μέγεθος (Ν) ενός τετραγωνικού πίνακα ΝxΝ και στη συνέχεια τα στοιχεία που θα αποθηκευτούν στις Ν 2 θέσεις αυτού του πίνακα. Ζητείται έπειτα το μέγεθος (Μ) ενός δεύτερου τετραγωνικού πίνακα ΜxΜ, ο οποίος είναι υποπίνακας εντός του αρχικού πίνακα. Ο χρήστης θα πρέπει επιπλέον να εισάγει την απόσταση του πρώτου στοιχείου του υποπίνακα από το αριστερό, αλλά και από το άνω άκρο του αρχικού πίνακα, ώστε να μπορεί να προσδιοριστεί η ακριβής θέση του υποπίνακα. Το πρόγραμμα θα αντιγράφει τον αρχικό πίνακα σε έναν νέο πίνακα, με τη διαφορά ότι στη θέση του υποπίνακα θα τοποθετεί έναν νέο υποπίνακα όπου κάθε στοιχείο του υπολογίζεται με την Εξίσωση 1. Πιο συγκεκριμένα, κάθε στοιχείο σύμφωνα με την Εξίσωση 1 αντικαθίσταται με το άθροισμα των τεσσάρων γειτονικών του στοιχείων (οριζόντια και κάθετα) συν το ίδιο το στοιχείο πολλαπλασιασμένο με 4 και όλο το άθροισμα διαιρεμένο με οκτώ (βλέπε παράδειγμα Εικόνα 1). Υποθέτουμε ότι ο εσωτερικός υποπίνακας δεν εφάπτεται στα όρια του μεγάλου πίνακα, ώστε να μην λάβουμε υπόψην τις περιπτώσεις που δεν υπάρχουν γείτονες σε κάποιες κατευθύνσεις. Τέλος, θα εκτυπώνεται ο τελικός πίνακας στην οθόνη. Η εμφάνιση πρέπει να γίνει έτσι, ώστε σε κάθε σειρά να εκτυπώνεται και μία γραμμή του πίνακα. a[i][j] = (4 * a[i][j] + a[i-1][j] + a[i+1][j] + a[i][j-1] + a[i][j+1]) / 8 Εξίσωση 1 Εικόνα 1 Έστω ένας πίνακας 5x5 (N=5) και ένας υποπίνακας 2x2 (M=2) στο εσωτερικό του. Για να προσδιοριστεί η θέση του υποπίνακα σε σχέση με τον πίνακα θα πρέπει ο χρήστης να προσδιορίσει τις τιμές left και upper όπου εδώ είναι 2 και 2 αντίστοιχα. Απεικονίζεται ο τύπος που χρησιμοποιείται για την αντικατάσταση του κάθε στοιχείου του υποπίνακα. Για παράδειγμα το στοιχείο 1 του υποπίνακα θα αντικατασταθεί από (4 * 1 + 7 + 4 + 4 + 5) / 8. [4]

Σχηματικά: Έστω ένας πίνακας 5x5 (N=5) και ένας υποπίνακας 2x2 (M=2) στο εσωτερικό του. Για να προσδιοριστεί η θέση του υποπίνακα σε σχέση με τον πίνακα θα πρέπει ο χρήστης να προσδιορίσει τις τιμές left και upper όπου εδώ είναι 2 και 2 αντίστοιχα. Το πρόγραμμα θα πρέπει να δημιουργεί και να εκτυπώνει έναν καινούριο πίνακα ο οποίος είναι αντίγραφο του αρχικού, αλλά με τον υποπίνακα τα στοιχεία του οποίου έχουν υπολογιστεί με Εξίσωση 1 στην θέση του αρχικού υποπίνακα. [5]

Υπόδειξη: Έχουμε συζητήσει στην τάξη για το ότι μονοδιάστατοι πίνακες αποθηκεύονται στην μνήμη έτσι ώστε το στοιχείο A[i] να βρίσκεται αμέσως μετά το στοιχείο A[i-1] του πίνακα. Η αποθήκευση ενός πίνακα A δύο διαστάσεων γίνεται με το να αποθηκεύεται η γραμμή i-1 αμέσως πριν την γραμμή i. Παράδειγμα πίνακα δύο διαστάσεων στην μνήμη(nxn): Ανάστροφος πίνακα Ο ανάστροφος του πίνακα Α είναι ο πίνακας Α Τ ο οποίος έχει γραμμές τις στήλες του Α και στήλες τις γραμμές του Α. Δηλαδή, αν [ ] τότε ο ανάστροφος είναι ο: [ ] [6]

Παράδειγμα εκτέλεσης: Please define the dimensions of the matrix: **** user input : 5 Now, you have to fill the matrix! **** user input : 10 **** user input : 3 **** user input : 4 **** user input : 5... Please define the dimensions of the submatrix: Please define the left distance: Please define the upper distance: The new matrix is: 10 2 3 4 5 1 6 7 4 8 2 4 3 3 3 7 1 3 4 9 1 4 6 8 5 Θα πρέπει να στέλνετε με email τις λύσεις των εργαστηριακών ασκήσεων σας στους διδάσκοντες στο ce134lab@gmail.com. To email σας θα πρέπει να περιέχει ως attachment ένα zip file με τον κώδικα σας. Κάθε διαφορετική άσκηση στην εκφώνηση θα βρίσκεται και σε διαφορετικό asm file. Το όνομα των asm files θα ΠΡΕΠΕΙ να αρχίζει με το ΑΕΜ σας. Για παράδειγμα, τo lab2.zip θα περιέχει 3 asm files, ένα για κάθε μία από τις ασκήσεις του lab2, με ονόματα 999_lab2a.asm, 999_lab2b.asm, 999_lab2c.asm για τον φοιτητή με ΑΕΜ 999. Το email σας θα έχει Subject: CE134, lab N, Section Χ (N o αριθμός του lab, N=2..., και X=1 έως 7). Το email σας θα έχει body: το όνομα σας και το AEM σας. Θα πρέπει να στέλνετε το email σας πριν βγείτε από την εξέταση του εργαστηρίου. [7]