Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή Ασκήσεις Η αρίθµηση των ασκήσεων είναι από την 4 η έκδοση του «Οργάνωση και Σχεδίαση Υπολογιστών: η διασύνδεση υλικού και λογισµικού», D.A.Patterson, J.L.Hennessy
Άσκηση 2.4 Τα επόµενα προβλήµατα ασχολούνται µε τη µετάφραση από τη C στη γλώσσα του MIPS. Υποθέστε ότι οι µεταβλητές f, g, h, i, και j ανατίθενται στους καταχωρητές $s0, $s1, $s2, $s3, και $s4, αντίστοιχα. Υποθέστε ότι η διεύθυνση βάσης των πινάκων A και B βρίσκεται στους καταχωρητές $s6 και $s7, αντίστοιχα. α. f = g + h + B[4]; β. f = g A[B[4]]; 2.4.1 Για τις παραπάνω εντολές της C, ποιος είναι ο αντίστοιχος κώδικας συµβολικής γλώσσας του MIPS; α. lw $s0, 16($s7) β. lw $t0, 16($s7) add $s0, $s0, $s1 sll $t0,$t0,2 add $s0, $s0, $s2 add $t1,$t0,$s6 lw $s0, 0($t1) sub $s0, $s1, $s0 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 2
Άσκηση 2.4 (συνέχεια) 2.4.2 Για τις παραπάνω εντολές της C, πόσες εντολές συµβολικής γλώσσας του MIPS χρειάζονται για να εκτελεστεί η εντολή της C; 3 εντολές στο α. και 5 εντολές στο β. 2.4.3 Για τις παραπάνω εντολές της C, πόσοι διαφορετικοί καταχωρητές χρειάζονται για την εκτέλεση κάθε µίας; 4 καταχωρητές στο α. και 6 στο β. Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 3
Άσκηση 2.4 (συνέχεια) Τα επόµενα προβλήµατα ασχολούνται µε τη µετάφραση από τη γλώσσα του MIPS στη C. Υποθέστε ότι οι µεταβλητές f, g, h, i, και j ανατίθενται στους καταχωρητές $s0, $s1, $s2, $s3, και $s4 αντίστοιχα. Υποθέστε ότι η διεύθυνση βάσης των πινάκων A και B βρίσκεται στους καταχωρητές $s6 και $s7 αντίστοιχα. α. add $s0, $s0, $s1 add $s0, $s0, $s2 add $s0, $s0, $s3 add $s0, $s0, $s4 β. lw $s0, 4($s6) Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 4
Άσκηση 2.4 (συνέχεια) 2.4.4 Για τις παραπάνω εντολές του MIPS, ποια είναι η αντίστοιχη εντολή της C; f += g + h + i + j; f = A[1]; 2.4.5 Για τις παραπάνω εντολές συµβολικής γλώσσας του MIPS, ξαναγράψτε το κώδικα συµβολικής γλώσσας ώστε να ελαχιστοποιήσετε τον αριθµό εντολών του MIPS (αν είναι δυνατόν) που απαιτούνται για να εκτελεστεί η ίδια λειτουργία. ε γίνεται καµία µε λιγότερες εντολές Στο α. έχουµε να προσθέσουµε 5 αριθµούς, άρα χρειάζονται 4 προσθέσεις µε όποια σειρά κι αν τις κάνουµε. Στο β. είναι προφανές. Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 5
Άσκηση 2.4 (συνέχεια) 2.4.6 Πόσοι καταχωρητές χρειάζονται για την εκτέλεση της συµβολικής γλώσσας του MIPS όπως δίνεται παραπάνω; Αν µπορούσατε να ξαναγράψετε τον παραπάνω κώδικα, ποιος είναι ο ελάχιστος αριθµός καταχωρητών που χρειάζονται; 5 στην α. και είναι οι ελάχιστοι 2 στη β. και είναι πάλι οι ελάχιστοι Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 6
Άσκηση 2.8 Τα επόµενα προβλήµατα ασχολούνται µε την επέκταση προσήµου και την υπερχείλιση. Οι καταχωρητές $s0 και $s1 έχουν τις τιµές που φαίνονται στον παρακάτω πίνακα. Θα σας ζητηθεί να εκτελέσετε µια λειτουργία MIPS σε αυτούς τους καταχωρητές και να δείξετε το αποτέλεσµα. α. $s0 = 70000000 hex, $s1 = 0FFFFFFF hex β. $s0 = 40000000 hex, $s1 = 40000000 hex Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 7
Άσκηση 2.8 (συνέχεια) 2.8.1 Για τα περιεχόµενα των καταχωρητών $s0 και $s1 όπως δίνονται παραπάνω, ποια είναι η τιµή του $t0 για τον επόµενο κώδικα συµβολικής γλώσσας: add $t0, $s0, $s1 Είναι το αποτέλεσµα στον $t0 το επιθυµητό, ή υπάρχει υπερχείλιση; α. 7FFFFFFF, δεν υπάρχει υπερχείλιση β. 80000000, υπάρχει υπερχείλιση (αλλαγή προσήµου) Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 8
Άσκηση 2.8 (συνέχεια) 2.8.2 Για τα περιεχόµενα των καταχωρητών $s0 και $s1 όπως δίνονται παραπάνω, ποια είναι η τιµή του $t0 για τον επόµενο κώδικα συµβολικής γλώσσας: sub $t0, $s0, $s1 Είναι το αποτέλεσµα στον $t0 το επιθυµητό, ή υπάρχει υπερχείλιση; α. 60000001, δεν υπάρχει υπερχείλιση β. 00000000, δεν υπάρχει υπερχείλιση Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 9
Άσκηση 2.8 (συνέχεια) 2.8.3 Για τα περιεχόµενα των καταχωρητών $s0 και $s1 όπως δίνονται παραπάνω, ποια είναι η τιµή του $t0 για τον επόµενο κώδικα συµβολικής γλώσσας: add $t0, $s0, $s1 add $t0, $t0, $s0 Είναι το αποτέλεσµα στον $t0 το επιθυµητό, ή υπάρχει υπερχείλιση; α. EFFFFFFF, υπάρχει υπερχείλιση β. C0000000, υπάρχει υπερχείλιση Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 10
Άσκηση 2.8 (συνέχεια) Στα επόµενα προβλήµατα, θα εκτελέσετε διάφορες λειτουργίες MIPS σε ένα ζεύγος καταχωρητών, $s0 και $s1. Με δεδοµένες τις τιµές των $s0 και $s1 σε κάθε µία από τις παρακάτω ερωτήσεις, πείτε αν θα υπάρξει υπερχείλιση. α. add $s0, $s0, $s1 β. sub $s0, $s0, $s1 sub $s0, $s0, $s1 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 11
Άσκηση 2.8 (συνέχεια) 2.8.4 Υποθέστε ότι $s0 = 70000000 hex και $s1 = 10000000 hex. Για τον πίνακα, θα υπάρξει υπερχείλιση; α. υπερχείλιση β. όχι υπερχείλιση 2.8.5 Υποθέστε ότι $s0 = 40000000 hex και $s1 = 20000000 hex. Για τον πίνακα, θα υπάρξει υπερχείλιση; α. όχι υπερχείλιση β. όχι υπερχείλιση 2.8.6 Υποθέστε ότι $s0 = 8FFFFFFF hex και $s1 = D0000000 hex. Για τον πίνακα, θα υπάρξει υπερχείλιση; α. υπερχείλιση β. όχι υπερχείλιση Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 12
Άσκηση 2.10 Στα επόµενα προβλήµατα, ο πίνακας δεδοµένων περιέχει bit που αναπαριστούν τον κώδικα µηχανής µιας εντολής. Θα σας ζητηθεί να µεταφράσετε τις καταχωρίσεις σε κώδικα συµβολικής γλώσσας και να προσδιορίσετε ποια µορφή εντολής MIPS αναπαριστούν τα bit. α. 1010 1110 0000 1011 0000 0000 0000 0100 two β. 1000 1101 0000 1000 0000 0000 0100 0000 two Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 13
Άσκηση 2.10 (συνέχεια) 2.10.1 Ποια εντολή αναπαριστούν οι παραπάνω δυαδικές καταχωρίσεις; α. sw $t3, 4($s0) β. lw $t0, 64($t0) 2.10.2 Τι τύπο εντολής (I ή R) αναπαριστούν οι παραπάνω δυαδικές καταχωρίσεις; Και οι δύο είναι του τύπου Ι. 2.10.3 Αν οι παραπάνω δυαδικές καταχωρίσεις ήταν bit δεδοµένων, ποιο δεκαεξαδικό αριθµό θα αναπαριστούσαν; α. ΑΕ0Β0004 β. 8D080040 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 14
Άσκηση 2.10 (συνέχεια) Στα επόµενα προβλήµατα, ο πίνακας δεδοµένων περιέχει εντολές του MIPS. Θα σας ζητηθεί να µεταφράσετε τις καταχωρίσεις σε bit του κώδικα µηχανής και να προσδιορίσετε ποια είναι η µορφή εντολής του MIPS. α. add $t0, $t0, $zero β. lw $t1, 4($s3) Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 15
Άσκηση 2.10 (συνέχεια) 2.10.4 είξτε τη δεκαεξαδική αναπαράσταση των παραπάνω εντολών. α. 0x01004020 β. 0x8E690004 2.10.5 Σε ποιο τύπο εντολής (I ή R) ανήκουν οι παραπάνω εντολές; α. τύπος R β. τύπος Ι Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 16
Άσκηση 2.10 (συνέχεια) 2.10.6 Ποια είναι η δεκαεξαδική αναπαράσταση των πεδίων opcode, rs, και rt σε αυτές τις εντολές; Για τις εντολές τύπου R, ποια είναι η δεκαεξαδική αναπαράσταση των πεδίων rd και funct; Για τις εντολές τύπου I, ποια είναι η δεκαεξαδική αναπαράσταση του πεδίου immediate; α. op=0x0, rd=0x8, rs=0x8, rt=0x0, funct=0x0 β. op=0x23, rs=0x13, rt=0x9, imm=0x4 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 17
Άσκηση 2.12 Στα επόµενα προβλήµατα, ο πίνακας δεδοµένων περιέχει διάφορες τροποποιήσεις που µπορούν να γίνουν στην αρχιτεκτονική συνόλου εντολών του MIPS. Θα διερευνήσετε την επίδραση αυτών των αλλαγών στη µορφή εντολών της αρχιτεκτονικής MIPS. α. 8 καταχωρητές β. άµεσες σταθερές των 10 bit Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 18
Άσκηση 2.12 (συνέχεια) 2.12.1 Αν το σύνολο εντολών του επεξεργαστή MIPS τροποποιηθεί, πρέπει να τροποποιηθεί επίσης και η µορφή των εντολών. Για κάθε µία από τις παραπάνω προτεινόµενες αλλαγές, δείξτε το µέγεθος των πεδίων bit µιας εντολής µορφής R. Ποιος είναι ο συνολικός αριθµός bit που χρειάζονται για κάθε εντολή; Τύπος opcode rs rt rd shamt funct α. R 6 3 3 3 5 6 σύνολο 26 bit β. R 6 5 5 5 5 6 σύνολο 32 bit Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 19
Άσκηση 2.12 (συνέχεια) 2.12.2 Αν το σύνολο εντολών του επεξεργαστή MIPS τροποποιηθεί, πρέπει να τροποποιηθεί επίσης και η µορφή των εντολών. Για κάθε µία από τις παραπάνω προτεινόµενες αλλαγές, δείξτε το µέγεθος των πεδίων bit µιας εντολής της µορφής I. Ποιος είναι ο συνολικός αριθµός bit που χρειάζονται για κάθε εντολή; Τύπος opcode rs rt immediate α. I 6 3 3 16 σύνολο 28 bit β. I 6 5 5 10 σύνολο 26 bit Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 20
Άσκηση 2.12 (συνέχεια) 2.12.3 Γιατί θα µπορούσε µια προτεινόµενη αλλαγή στον παραπάνω πίνακα να µειώσει το µέγεθος ενός προγράµµατος συµβολικής γλώσσας του MIPS; Γιατί θα µπορούσε µια προτεινόµενη αλλαγή στον παραπάνω πίνακα να αυξήσει το µέγεθος ενός προγράµµατος συµβολικής γλώσσας του MIPS; α. λιγότεροι καταχωρητές λιγότερα bit ανά εντολή θα µπορούσε να µειωθεί το µέγεθος του κώδικα λιγότεροι καταχωρητές περισσότερα «σκορπίσµατα» (spills) καταχωρητών περισσότερες εντολές β. µικρότερες σταθερές περισσότερες εντολές lui θα µπορούσε να αυξηθεί το µέγεθος του κώδικα µικρότερες σταθερές µικρότεροι opcodes µικρότερο µέγεθος κώδικα Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 21
Άσκηση 2.12 (συνέχεια) Στα επόµενα προβλήµατα, ο πίνακας δεδοµένων περιέχει δεκαεξαδικές τιµές. Θα σας ζητηθεί να προσδιορίσετε ποια εντολή MIPS αναπαριστά η τιµή, και να βρείτε τη µορφή εντολής του MIPS. α. 01090010 hex β. 8D090012 hex 2.12.4 Για τις παραπάνω καταχωρίσεις, ποια είναι η τιµή του αριθµού στο δεκαδικό σύστηµα; α. 17367056 β. 2366177298 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 22
Άσκηση 2.12 (συνέχεια) 2.12.5 Ποια εντολή αναπαριστούν οι παραπάνω δεκαεξαδικές καταχωρίσεις; α. add $t0, $t1, $zero β. lw $t1, 12($t0) 2.12.6 Ποιο τύπο εντολής (I ή R) αναπαριστούν οι παραπάνω δυαδικές καταχωρίσεις; Ποια είναι η τιµή του πεδίου op και του πεδίου rt; α. R-type, opcode = 0x0, rt = 0x9 β. I-type, opcode = 0x23, rt, 0x8 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 23
Άσκηση 2.13 Στα επόµενα προβλήµατα, ο πίνακας δεδοµένων περιέχει τις τιµές των καταχωρητών $t0 και $t1. Θα σας ζητηθεί να εκτελέσετε διάφορες λογικές λειτουργίες MIPS σε αυτούς τους καταχωρητές. α. $t0 = 55555555 hex, $t1 = 12345678 hex β. $t0 = BEADFEED hex, $t1 = DEADFADE hex Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 24
Άσκηση 2.13 (συνέχεια) 2.13.1 Για τις παραπάνω γραµµές, ποια είναι η τιµή του $t2 για την παρακάτω ακολουθία εντολών; sll $t2, $t0, 4 or $t2, $t2, $t1 α. 0x57755778 β. 0xFEFFFEDE 2.13.2 Για τις παραπάνω γραµµές, ποια είναι η τιµή του $t2 για την παρακάτω ακολουθία εντολών; sll $t2, $t0, 4 andi $t2, $t2, 1 α. 0x55555550 β. 0xEADFEED0 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 25
Άσκηση 2.13 (συνέχεια) 2.13.3 Για τις παραπάνω γραµµές, ποια είναι η τιµή του $t2 για την παρακάτω ακολουθία εντολών; srl $t2, $t0, 3 andi $t2, $t2, 0xFFEF α. 0x0000AAAA β. 0x0000BFCD Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 26
Άσκηση 2.13 (συνέχεια) Στην επόµενη άσκηση, ο πίνακας δεδοµένων περιέχει διάφορες λογικές λειτουργίες του MIPS. Θα σας ζητηθεί να βρείτε το αποτέλεσµα αυτών των λειτουργιών µε δεδοµένες τιµές για τους καταχωρητές $t0 και $t1. α. sll $t2, $t0, 1 or $t2, $t2, $t1 β. srl $t2, $t0, 1 andi $t2, $t2, 0x00F0 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 27
Άσκηση 2.13 (συνέχεια) 2.13.4 Υποθέστε ότι $t0 = 0000A5A5 hex και ότι $t1 = 00005A5A hex. Ποια είναι η τιµή του $t2 µετά τις δύο εντολές στον πίνακα; α. 0x00015B5A β. 0x00000000 2.13.5 Υποθέστε ότι $t0 = A5A50000 hex και $t1 = A5A50000 hex. Ποια είναι η τιµή του $t2 µετά τις δύο εντολές στον πίνακα; α. 0x5B5A0000 β. 0x000000F0 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 28
Άσκηση 2.13 (συνέχεια) 2.13.6 Υποθέστε ότι $t0 = A5A5FFFF hex και ότι $t1 = A5A5FFFF hex. Ποια είναι η τιµή του $t2 µετά τις δύο εντολές στον πίνακα; α. 0xEFEFFFFF β. 0x000000F0 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 29
Άσκηση 2.14 Η επόµενη εικόνα δείχνει τη θέση ενός πεδίου bit στον καταχωρητή $t0. Στα επόµενα προβλήµατα, θα σας ζητηθεί να γράψετε εντολές του MIPS για την εξαγωγή των bit του «Πεδίου» από τον καταχωρητή $t0 και την τοποθέτησή τους στον καταχωρητή $t1 στη θέση που καθορίζεται στον επόµενο πίνακα. Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 30
Άσκηση 2.14 (συνέχεια) 2.14.1 Βρείτε τη συντοµότερη ακολουθία εντολών του MIPS που εξάγει ένα πεδίο από τον $t0 για τις σταθερές τιµές i = 22 και j = 5, και τοποθετεί το πεδίο στον $t1 στη µορφή που δείχνει ο πίνακας δεδοµένων. α. add $t1, $t0, $zero srl $t1, $t1, 5 andi $t1, $t1, 0x0001ffff β. add $t1, $t0, $zero sll $t1, $t1, 10 andi $t1, $t1, 0xffff8000 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 31
Άσκηση 2.14 (συνέχεια) 2.14.2 Βρείτε τη συντοµότερη ακολουθία εντολών του MIPS που εξάγει ένα πεδίο από τον $t0 για τις σταθερές τιµές i = 4 και j = 0, και τοποθετεί το πεδίο στον $t1 στη µορφή που δείχνει ο πίνακας δεδοµένων. α. add $t1, $t0, $zero andi $t1, $t1, 0x0000000f β. add $t1, $t0, $zero srl $t1, $t1, 14 andi $t1, $t1, 0x0003c000 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 32
Άσκηση 2.14 (συνέχεια) 2.14.3 Βρείτε τη συντοµότερη ακολουθία εντολών MIPS που εξάγει ένα πεδίο από τον $t0 για τις σταθερές τιµές i = 31 και j = 28, και τοποθετεί το πεδίο στον $t1 στη µορφή που δείχνει ο πίνακας δεδοµένων. α. add $t1, $t0, $zero srl $t1, $t1, 28 β. add $t1, $t0, $zero srl $t1, $t1, 14 andi $t1, $t1, 0x0001c000 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 33
Άσκηση 2.14 (συνέχεια) Στα επόµενα προβλήµατα, θα σας ζητηθεί να γράψετε εντολές του MIPS για την εξαγωγή των bit του «Πεδίου» από τον καταχωρητή $t0 που φαίνεται στην εικόνα, και την τοποθέτησή τους στον καταχωρητή $t1 στη θέση που καθορίζεται στον επόµενο πίνακα. Τα bit «XXX» πρέπει να µείνουν αµετάβλητα. Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 34
Άσκηση 2.14 (συνέχεια) 2.14.4 Βρείτε τη συντοµότερη ακολουθία εντολών του MIPS που εξάγει ένα πεδίο από τον $t0 για τις σταθερές τιµές i = 17 και j = 11, και τοποθετεί το πεδίο στον $t1 στη µορφή που δείχνει ο πίνακας δεδοµένων. α. add $t2, $t0, $zero srl $t2, $t2, 11 and $t2, $t2, 0x0000003f and $t1, $t1, 0xffffffc0 ori $t1, $t1, $t2 β. add $t2, $t0, $zero sll $t2, $t2, 3 and $t2, $t2, 0x000fc000 and $t1, $t1, 0xfff03fff ori $t1, $t1, $t2 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 35
Άσκηση 2.14 (συνέχεια) 2.14.5 Βρείτε τη συντοµότερη ακολουθία εντολών του MIPS που εξάγει ένα πεδίο από τον $t0 για τις σταθερές τιµές i = 5 και j = 0, και τοποθετεί το πεδίο στον $t1 στη µορφή που δείχνει ο πίνακας δεδοµένων. α. add $t2, $t0, $0 and $t2, $t2, 0x0000001f and $t1, $t1, 0xffffffe0 ori $t1, $t1, $t2 β. add $t2, $t0, $0 sll $t2, $t2, 14 and $t2, $t2, 0x0007c000 and $t1, $t1, 0xfff83fff ori $t1, $t1, $t2 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 36
Άσκηση 2.14 (συνέχεια) 2.14.6 Βρείτε τη συντοµότερη ακολουθία εντολών του MIPS που εξάγει ένα πεδίο από τον $t0 για τις σταθερές τιµές i = 31 και j = 29, και τοποθετεί το πεδίο στον $t1 στη µορφή που δείχνει ο πίνακας δεδοµένων. α. add $t2, $t0, $0 srl $t2, $t2, 29 and $t2, $t2, 0x00000003 and $t1, $t1, 0xfffffffc ori $t1, $t1, $t2 β. add $t2, $t0, $0 srl $t2, $t2, 15 and $t2, $t2, 0x0000c000 and $t1, $t1, 0xffff3fff ori $t1, $t1, $t2 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 37
Άσκηση 2.16 Σε αυτά τα προβλήµατα, ο πίνακας περιέχει διάφορες δυαδικές τιµές για τον καταχωρητή $t0. Με δεδοµένη την τιµή του $t0, θα σας ζητηθεί να υπολογίσετε το αποτέλεσµα διαφορετικών διακλαδώσεων. α. 1010 1101 0001 0000 0000 0000 0000 0010 two β. 1111 1111 1111 1111 1111 1111 1111 1111 two Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 38
Άσκηση 2.16 (συνέχεια) 2.16.1 Υποθέστε ότι ο καταχωρητής $t0 περιέχει µια τιµή από τις προηγούµενες και ο $t1 έχει την τιµή 0011 1111 1111 1000 0000 0000 0000 0000 two Ποια είναι η τιµή του $t2 µετά τις επόµενες εντολές; slt $t2, $t0, $t1 beq $t2, $zero, ELSE j DONE ELSE: addi $t2, $zero, 2 DONE: Και για τις δύο τιµές του $t0, ο $t2 έχει τελικά την τιµή 1 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 39
Άσκηση 2.16 (συνέχεια) 2.16.2 Υποθέστε ότι ο καταχωρητής $t0 περιέχει µια τιµή από τον παραπάνω πίνακα, και συγκρίνεται µε την τιµή Χ µε τη χρήση της παρακάτω εντολής MIPS. Για ποιες τιµές του X, αν υπάρχουν, θα είναι ο $t2 ίσος µε 1; slti $t2, $t0, X Προφανής η απάντηση. Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 40
Άσκηση 2.16 (συνέχεια) 2.16.3 Υποθέστε ότι ο µετρητής προγράµµατος (program counter PC) έχει την τιµή 0000 0020 hex. Είναι δυνατόν να χρησιµοποιηθεί η εντολή jump (j) της συµβολικής γλώσσας του MIPS για να πάρει ο PC τη διεύθυνση που φαίνεται στον παραπάνω πίνακα δεδοµένων; Είναι δυνατόν να χρησιµοποιηθεί η εντολή branch-on-equal (beq) της συµβολικής γλώσσας του MIPS για να πάρει ο PC τη διεύθυνση που φαίνεται στον παραπάνω πίνακα δεδοµένων; Η απάντηση είναι όχι σε όλες τις περιπτώσεις. Γιατί; Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 41
Άσκηση 2.16 (συνέχεια) Γι αυτά τα προβλήµατα, ο πίνακας περιέχει διάφορες δυαδικές τιµές για τον καταχωρητή $t0. Με δεδοµένη την τιµή του $t0, θα σας ζητηθεί να υπολογίσετε το αποτέλεσµα διαφορετικών διακλαδώσεων. α. 00001000 hex β. 20001400 hex Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 42
Άσκηση 2.16 (συνέχεια) 2.16.4 Υποθέστε ότι ο καταχωρητής $t0 περιέχει µια τιµή από τις παραπάνω. Ποια είναι η τιµή του $t2 µετά τις επόµενες εντολές; slt $t2, $t0, $t0 bne $t2, $zero, ELSE j DONE ELSE: addi $t2, $t2, 2 DONE: Και στις δύο περιπτώσεις ο $t2 είναι 0 Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 43
Άσκηση 2.16 (συνέχεια) 2.16.5 Υποθέστε ότι ο καταχωρητής $t0 περιέχει µια τιµή από τις παραπάνω. Ποια είναι η τιµή του $t2 µετά τις επόµενες εντολές; sll $t0, $t0, 2 slt $t2, $t0, $zero Στην α. περίπτωση ο $t2 είναι 0 ενώ στη β. είναι 1 (αφού ο $t0 γίνεται αρνητικός µε την ολίσθηση). Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 44
Άσκηση 2.16 (συνέχεια) 2.16.6 Υποθέστε ότι ο µετρητής προγράµµατος (program counter PC) έχει την τιµή 2000 0000 hex. Είναι δυνατόν να χρησιµοποιηθεί η εντολή jump (j) της συµβολικής γλώσσας του MIPS για να πάρει ο PC τη διεύθυνση που φαίνεται στον παραπάνω πίνακα δεδοµένων; Είναι δυνατόν να χρησιµοποιηθεί η εντολή branch-on-equal (beq) της συµβολικής γλώσσας του MIPS ώστε να πάρει ο PC τη διεύθυνση που φαίνεται στον παραπάνω πίνακα δεδοµένων; α. jump = ναι, beq = όχι β. jump = ναι, beq = ναι Ασκήσεις Κεφάλαιο 2 Εντολές: η γλώσσα του υπολογιστή 45