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

Σχετικά έγγραφα
Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

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

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

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

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ

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

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

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

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

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

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

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

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

MIPS functions and procedures

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

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

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

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

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

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

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

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

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

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

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

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

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

Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32. Αρχείο καταχωρητών και Χάρτης Μνήµης

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ. Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ;

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

Στοιχεία από Assembly Γιώργος Μανής

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

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

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

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

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

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

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

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

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

Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον υποδειγματική διδασκαλία Κεφ. 3 Δομές Δεδομένων & αλγόριθμοι

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

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

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

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

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

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

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

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

Εργαστήριο Αρ. 1. Εισαγωγή στην Αρχιτεκτονική MIPS. Πέτρος Παναγή Σελ. 1

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

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

Τελικός Κώδικας. Παραγωγή. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. ΗΓλώσσαΜηχανής. Παραγωγή. Τελικού Κώδικα. Ενδιάµεσος.

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

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

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

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

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

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

Προγραμματισμός Η/Υ. 4 η ενότητα: Δομές Δεδομένων. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

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

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

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 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;

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

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

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Παραγωγή Τελικού Κώδικα. Γιώργος Μανής

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής. Εισαγωγή στους Η/Υ

ΜΑΘΗΜΑ: ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΘΕΜΑΤΑ ΙΟΥΝΙΟΥ 2014

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

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

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

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Διαλέξεις 6: Κάλεσμα Διαδικασιών, Χρήση και Σώσιμο Καταχωρητών. Μανόλης Γ.Η.

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

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

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

Transcript:

Παραδείγματα Assembly Μέρος Γ 1 Άσκηση 1 (α) Σε τι χρησιμεύει η Στοίβα στο Spim, όσο αφορά τη ροή ενός προγράμματος; α) Για προσωρινή αποθήκευση του καταχωρητη $ra σε περιπτώσεις που έχουμε κλήση συνάρτησης μέσα από μια συνάρτηση β) για προσωρινή αποθήκευση των καταχωρητών $s πριν από μια κλήση συνάρτησης που επαναχρησιμοποιεί κάποιον καταχωρητή από τους $s. 2

Άσκηση 1 (β) Τι είναι η Στοίβα και ποια η πολιτική που ακολουθείται κατά το γέμισμα και άδειασμα της; Εξηγήστε τι είναι ο $sp και ο $bp και ποια η σχέση τους πριν αποθηκευτεί κάποιο στοιχείο στη Στοίβα. Η στοίβα είναι μια δομή δεδομένων στη μνήμη που ακολουθεί την πολιτική Last-In-First-Out. O $bp είναι δείκτης στη βάση της Στοίβας και ο $sp είναι ο δείκτης της Στοίβας ο οποίος δείχνει πάντοτε το επόμενο στοιχείο που θα τύχει διαχείρισης. Αρχικά $bp = $sp. 3 Άσκηση 1 (γ) Σε τι χρησιμεύει η Στοίβα στο Spim, Α) όσον αφορά στη ροή ενός προγράμματος Β) όσον αφορά στην άσκηση 3 Α) Για προσωρινή αποθήκευση του καταχωρητη $ra σε περιπτώσεις που έχουμε κλήση συνάρτησης μέσα από μια συνάρτηση και των καταχωρητών $s πριν από μια κλήση συνάρτησης που επαναχρησιμοποιεί κάποιον καταχωρητή από τους $s. Β) Στην άσκηση 3 χρησιμοποιήθηκε για να αποθηκεύει τον ascii κώδικα των παρενθέσεων και στη συνέχεια να τον ανακτά για να τον συγκρίνει με την κλειστή παρένθεση που βρέθηκε. 4

Άσκηση 2 (α) Περιγράψτε με λόγια τη διαδικασία που ακολουθείται για την υλοποίηση της συνάρτησης PUSH. Βεβαιωθείτε ότι έχετε συμπεριλάβει και τους απαιτούμενους ελέγχους. 1. Έλεγχος εάν η Στοίβα έχει υπερβεί το όριο 2. Μείωση του δείκτη της Στοίβας (κατά 4 για word ήκατὰ1 για byte) 3. Αποθήκευση του νέου στοιχείου στη μνήμη 5 Άσκηση 2 (β) Περιγράψτε με λόγια τη διαδικασία που ακολουθείται για την υλοποίηση της συνάρτησης POP. Βεβαιωθείτε ότι έχετε συμπεριλάβει και τους απαιτούμενους ελέγχους πριν το διάβασμα από τη Στοίβα. 1. Έλεγχος εάν η Στοίβα είναι άδεια 2. Φόρτωση του νέου στοιχείου από τη μνήμη 3. Αύξηση του δείκτη της στοίβας (κατά 4 για word ήκατὰ1 για byte) 6

Άσκηση 2 (γ) Εξηγήστε γιατί πρέπει να οριοθετούμε τη Στοίβα στο Spim; Τι πρόβλημα μπορεί να προκύψει εάν δεν το κάνουμε; Η Στοίβα πρέπει να οριοθετείται γιατί διαφορετικά υπάρχει μεγάλη πιθανότητα να μπει σε άλλη περιοχή μνήμης και να σβήσει δεδομένα ή εντολές που είναι αποθηκευμένα εκεί. 7 Άσκηση 3 (α) Γράψτε ένα σύντομο πρόγραμμα το οποίο θα πραγματοποιεί POP ενός byte στον καταχωρητή $t6, αφού πρώτα κάνει τον απαιτούμενο έλεγχο για να βεβαιωθεί ότι υπάρχει κάποιο στοιχείο αποθηκευμένο στη Στοίβα. 1. beq $sp, $bp, empty_stack 2. lb $t6, ($sp) 3. addi $sp, $sp, 1 8

Άσκηση 3 (β) Γράψτε ένα σύντομο πρόγραμμα το οποίο θα πραγματοποιεί PUSH με το περιεχόμενο του καταχωρητή $t5, αφού πρώτα κάνει τον απαιτούμενο έλεγχο για να βεβαιωθεί ότι υπάρχει ο απαιτούμενος χώρος στη Στοίβα. 1. beq $sp, $t9, stack_overflow 2. addi $sp, $sp, -4 3. sw $t5, ($sp) 4. # $t9 holds the last address before stack overflows 9 Άσκηση 3 (γ) Δίνονται τα περιεχόμενα των καταχωρητών και της μνήμης ως ακολούθως: $t0 = 0Χ50000000 $t1= 0ΧΑΒ012345 0x50000000: 0x78 0x50000001: 0x56 0x50000002: 0x12 0x50000003: 0xΒ2 Δείξτε τι θα αλλάξει μετά από κάθε εντολή (η κάθεεντολή είναι ανεξάρτητη): 1. lb $t3, 0x50000003 $t3 = 0Χ000000Β2 2. sw $t1, 0x50000000 Θέσεις μνήμης 0x50000000-3 = 0x45, 0x23, 0x01 ΑΒ 3. la $t8, 0x50000000 $t8 = 0x50000000 4. move $t0, $t1 $t0 = 0ΧΑΒ012345 10

Άσκηση 4 (α) Δίνονται τα περιεχόμενα των καταχωρητών και της μνήμης ως ακολούθως: $t0 = 0Χ50000000 $t1=0χαβ012345 0x50000000: 0x78 0x50000001: 0x56 0x50000002: 0x12 0x50000003: 0xΒ2 Δείξτε τι θα αλλάξει μετά από κάθε εντολή (η κάθεεντολήείναι ανεξάρτητη): 1. lb $t3, 0x50000003 $t3 = 0Χ00000012 2. li $t4, 0x50000001 $t4 = 0x50000001 3. la $t8, 0x50000000 $t8 = 0x50000000 4. lw $t5, ($t0) $t5 = 0xΒ2125678 5. sb $t0, 2($t1) Θέση Μνήμης 0ΧΑΒ012347 = 00 6. sw $t1, 0x50000002 Θέσεις Μνήμης 0x50000002-5 = 0Χ45, 0Χ23, 0Χ01, ΑΒ 7. move $t0, $t1 $t0 = 0ΧΑΒ012345 11 Άσκηση 4 (β) Δίνονται τα περιεχόμενα των καταχωρητών και της μνήμης ως ακολούθως: $t0 = 0Χ60000000 $t1=0χαβ012345, 0x60000000: 0x18 0x60000001: 0x56 0x60000003: 0x12 0x60000002: 0x1Α Δείξτε τι θα αλλάξει μετά από κάθε εντολή (η κάθεεντολήείναι ανεξάρτητη): 1. lb $t3, 0x60000003 $t3 = 0X00000012 2. li $t8, 0x60000001 $t8 = 0x60000001 3. la $t4, 0x60000000 $t4 = 0x60000000 4. lw $t5, 0x60000000 $t5 = 0x12561Α18 5. sb $t0, 2($t1) Θέση Μνήμης 0ΧΑΒ012347 = 00 6. sw $t1, 4($t0) Θέσεις Μνήμης 0x60000004-7 = 0Χ45, 0Χ23, 0Χ01, ΑΒ 7. move $t1, $t0 $t1 = 0Χ60000000 12

Άσκηση 4 (γ) Γράψτε ένα πρόγραμμα το οποίο θα πραγματοποιεί ανταλλαγή μεταξύ των καταχωρητών $t1 και $t2, με την χρήση της Στοίβας (PUSH και POP). Θα πρέπει να κάνετε και τους απαιτούμενους ελέγχους προτού αποθηκεύσετε ή πάρετε κάποιο στοιχείο από τη Στοίβα. 13 Άσκηση 4 (γ) 1. # $t9 holds the 4th address before stack overflows 2. beq $sp, $t9, stack_overflow # check for stack overflow 3. addi $sp, $sp, -4 # move stack pointer down 4. sw $t1, ($sp) # place $t1 on stack 5. beq $sp, $t9, stack_overflow # check for stack overflow 6. addi $sp, $sp, -4 # move stack pointer down 7. sw $t2, ($sp) # place $t2 on stack 8. beq $sp, $bp, empty_stack # check for empty stack 9. lw $t1, ($sp) # load $t1 from memory ($sp) 10.addi $sp, $sp, 4 # move stack pointer up 11.beq $sp, $bp, empty_stack # check for empty stack 12.lw $t2, ($sp) # load $t2 from memory ($sp) 13.addi $sp, $sp, 4 # move stack pointer up 14