Title: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on April 14, 2013, 20:32:00 pm Συζήτηση και απορίες για τη δεύτερη εργασία. Να μένετε εντός θέματος.
Δεύτερη Εργαστηριακή Εργασία Ημερομηνία υποβολής της εργασίας: 31 Μαϊου 2013 Γράψετε πρόγραμμα στη γλώσσα Assembly του MIPS που να εκτελεί τις παρακάτω λειτουργίες: 1. Να μπορεί ο χρήστης του προγράμματος να εισάγει από την κονσόλα του προσομοιωτή του MIPS, PCSpim, τις τιμές των στοιχείων τριών πινάκων Α, Β, και C διαστάσεων 3Χ3 η κάθεμια ως εξής. Το πρόγραμμα να τυπώνει στην οθόνη ακολουθιακά το όνομα κάθε στοιχείου του κάθε πίνακα, όπως δείχνεται στο σχήμα 1, και ο χρήστης να εισάγει ένα πραγματικό αριθμό σε κάθε στοιχείο.
2. Να εκτελεί την ακόλουθη πράξη των πινάκων: D=Α+Β*C 3. Nα τυπώνει στην κονσόλα το αποτέλεαμα της πράξης με το τρόπο που δείχνεται στο σχήμα 2.
Υποδείξεις 1. Οι αρχικές διευθύνσεις των πινάκων μπορούν να είναι παράμετροι και να βρίσκονται στους καταχωρητές $a0, $a1, $a2. 2. Για την υλοποίηση της ζητούμενης πράξης μπορείτε να προγραμματίσετε τρεις βρόχους τον ένα μέσα στον άλλο που να υλοποιούν τη ακόλουθη ρουτίνα σε γλώσσα C. Code: Void mm ( double a[][]), double b[][], double c[][]) 3. Υποθέστε ότι οι ακέραιες μεταβλητές i, j και k βρίσκονται στους $s0, $s1, και $s2. 4. Παρατηρήστε ότι στο δεύτερο εσωτερικό βρόχο το k δεν επηρεάζει το στοιχείο a[ i ][ j ] και έτσι αποφεύγεται η φόρτωσή του και η αποθήκευσή του σε κάθε επανάληψη του δεύτερου εσωτερικού βρόχου. Χρησιμοποιήστε για την αποθήκευση του a[ i ][ j ] ενα καταχωρητή που να μη χρησιμοποιείται στον εσωτερικό βρόχο για τη συσσώρευση του αθροίσματος των b[ i ][ k ] και c[ k ][ j ]. 5. Για να υπολογίσετε την εκάστοτε διεύθυνση των στοιχείων a[ i ][ j ] πρέπει να θεωρήσετε ένα τρόπο αποθήκευσης κάθε διδιάστατου πίνακα στη μνήμη. Ο συνήθης τρόπος που θεωρούν οι μεταγλωττιστές γλωσσών υψηλού επιπέδου είναι κάθε γραμμή να αποθηκεύεται ως μονοδιάστατος πίνακας, και οι διαδοχικές γραμμές να αποθηκεύονται η μια κάτω από την άλλη. Έτσι για να βρεθεί o αριθμοδείκτης του πρώτου στοιχείου της i γραμμής πρέπει να πολλαπλασιασθεί ο δείκτης i με το πλήθος των στοιχείων της i γραμμής , που στην περίπτωση της άσκησης αυτής είναι 3. Για να βρεθεί ο αριθμοδείκτης του a[ i ][ j ] στοιχείου πρέπει στο παραπάνω γινόμενο να προστεθεί το j. Επι πλέον για να βρεθεί και η διευθυνση της μνήμης στην οποία είναι αποθηκευμένο το στοιχείο πρέπει να γίνει η πράξη: Διεύθυνση=(Διεύθυνση βάσης του πίνακα a) +(i*3+j)*4 στην περίπτωση που οι τιμές των στοιχείων είναι εκφρασμένες σε μορφή κινητής υποδιαστολής απλής ακρίβειας. Αν χρησιμοποιείται διπλή ακρίβεια τότε η διεύθυση υπολογίζεται από τη σχέση: Διεύθυνση=(Διεύθυνση βάσης του a)+(i*3+j)*8 6. Όταν προσδιορισθεί η διεύθυνση του στοιχείου a[ i ][ j ] γίνεται η φόρτωσή του σε κάποιο καταχωρητή κινητής υποδιαστολής και επαναλάμβάνονται παρόμοιες διαδικασίες για την αποθήκευση σε καταχωρητές κινητής υποδιαστολής των στοιχείων b [ i ][ k ] και c[ k ][ j ]. 7. Όταν έχουν φορτωθεί τα δεδομένα, μπορούν να γίνουν οι πράξεις πολλαπλασιασμού των στοιχείων b[ i ][ k ]*c[ k ][ j ] και η συσσώρευση του αποτελέσματος στον καταχωρητή του a[ i ][ j ]. Στη συνέχεια πρέπει να αυξηθεί ο δείκτης κ και να γίνει επιστροφή στην αρχή του βρόχου αν το κ δεν είναι 3. 8. Για την εκτύπωση των πινάκων 1 και 2 καθώς και την είσοδο των πληκτρολογούμενων τιμών θα πρέπει να γίνει επαναλαμβανόμενη χρήση των κατάλληλων syscall. Source: eTHMMY (http://alexander.ee.auth.gr:8083/eTHMMY/archive/150/downloadFile/5279/Second_%20Laboratory%20Exercise_2013.pdf) Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Dealan on April 30, 2013, 15:16:28 pm Εντωμεταξύ ο κώδικας στην c ούτε που δουλεύει, το for (j=0; j!=0; j=j+1) δεν τρέχει ποτέ, άρα όλο το loop δεν κάνει τίποτα.
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on April 30, 2013, 15:45:13 pm Εντωμεταξύ ο κώδικας στην c ούτε που δουλεύει, το for (j=0; j!=0; j=j+1) δεν τρέχει ποτέ, άρα όλο το loop δεν κάνει τίποτα. Go figure... Γενικά, είχε πολλά λάθη η εκφώνηση τα οποία διόρθωσα. Αυτό μου είχε ξεφύγει ;) Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: elefmylo on May 16, 2013, 13:35:48 pm Ποιο κομμάτι από το Patterson θα πρέπει να έχουμε διαβάσει για να τη κάνουμε...?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 16, 2013, 15:51:56 pm exomag η παραδοση δεν ειναι για τις 15 ε? (δηλαδη για χτες... :D )
τρομαξα προς στιγμην... Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Fcoriolis on May 16, 2013, 20:54:15 pm για τις 30 είναι
exomag η παραδοση δεν ειναι για τις 15 ε? (δηλαδη για χτες... :D ) τρομαξα προς στιγμην... Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: gt on May 16, 2013, 21:43:31 pm Ποιο κομμάτι από το Patterson θα πρέπει να έχουμε διαβάσει για να τη κάνουμε...? Tο παραρτημα Α...Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: boone on May 17, 2013, 12:51:34 pm Θέλει οι αριθμοί που εισάγονται να είναι πραγματικοί δηλαδή τύπου float ή double, σωστά?
Αυτό δεν συνεπάγεται ένα νέο σύνολο εντολών και καταχωρητών? Από τα λίγα που είδα στο google... Ή απλά βάζουμε την syscall να διαβάζει float και όλα οκ? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 17, 2013, 19:22:43 pm Θέλει οι αριθμοί που εισάγονται να είναι πραγματικοί δηλαδή τύπου float ή double, σωστά? Αυτό δεν συνεπάγεται ένα νέο σύνολο εντολών και καταχωρητών? Από τα λίγα που είδα στο google... Ή απλά βάζουμε την syscall να διαβάζει float και όλα οκ? Διάβασε αυτό (http://www.doc.ic.ac.uk/lab/secondyear/spim/node20.html). Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 20, 2013, 18:03:00 pm Quote Οι αρχικές διευθύνσεις των πινάκων μπορούν να είναι παράμετροι εννοωντας?? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: kofski17 on May 20, 2013, 19:13:27 pm μπορεί κάποιος να δώσει τις παραγράφους από Patterson που να αντιστοιχούν στην ύλη της εργασίας?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: orestisk4 on May 21, 2013, 15:43:20 pm μπορεί κάποιος να δώσει τις παραγράφους από Patterson που να αντιστοιχούν στην ύλη της εργασίας? +1 Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ Post by: gt on May 22, 2013, 12:42:19 pm Παιδια μια χαζη ερωτηση...Τα στοιχεια προφανως θα τα εισαγουμε ενα-ενα καθε φορα...Δηλαδη θα εμφανιζεται π.χ α(1,1)= , θα βαζω την τιμη,θα παταω ΕNTER και μετα θα εμφανιζεται α(1,2)= και παλι τα ιδια...ή θα εμφανιζεται το σχημα που λεει και θα βαζουμε το ποντικι εκει που θελουμε να εισαγουμε και θα εισαγουμε με Εντερ?Τραβηγμενο ετσι?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 22, 2013, 20:30:02 pm Παιδια μια χαζη ερωτηση...Τα στοιχεια προφανως θα τα εισαγουμε ενα-ενα καθε φορα...Δηλαδη θα εμφανιζεται π.χ α(1,1)= , θα βαζω την τιμη,θα παταω ΕNTER και μετα θα εμφανιζεται α(1,2)= και παλι τα ιδια...ή θα εμφανιζεται το σχημα που λεει και θα βαζουμε το ποντικι εκει που θελουμε να εισαγουμε και θα εισαγουμε με Εντερ?Τραβηγμενο ετσι? Εξωφρενικά τραβηγμένο... Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Fcoriolis on May 22, 2013, 20:52:15 pm Παιδια μια χαζη ερωτηση...Τα στοιχεια προφανως θα τα εισαγουμε ενα-ενα καθε φορα...Δηλαδη θα εμφανιζεται π.χ α(1,1)= , θα βαζω την τιμη,θα παταω ΕNTER και μετα θα εμφανιζεται α(1,2)= και παλι τα ιδια...ή θα εμφανιζεται το σχημα που λεει και θα βαζουμε το ποντικι εκει που θελουμε να εισαγουμε και θα εισαγουμε με Εντερ?Τραβηγμενο ετσι? Εξωφρενικά τραβηγμένο... Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: gt on May 23, 2013, 16:35:26 pm To φανταστηκα...Ωραια και με ποια σειρα θα εμφανιζονται?α(1,1) , a(1,2) .....ή a(1,1),a(2,2)...Δηλαδη καθετα ή οριζοντια?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 23, 2013, 23:56:41 pm To φανταστηκα...Ωραια και με ποια σειρα θα εμφανιζονται?α(1,1) , a(1,2) .....ή a(1,1),a(2,2)...Δηλαδη καθετα ή οριζοντια? Οριζόντια πιστεύω πως θα χρειαστεί πολύ περισσότερο κόπο απ' όσο αξίζει για αυτήν την εργασία... Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 23, 2013, 23:59:39 pm Δεν νομίζω να αφαιρεί μονάδες από την εργασία επειδή δεν τα εμφάνισες με συγκεκριμένο τρόπο. Άλλωστε, είναι πολύ δύσκολο να γίνει (ναι, γίνεται, αλλα δεν αξιζει τόσος κόπος για ένα τόσο δευτερεύον ζήτημα της εργασίας, εκτός και αν θές να το κάνεις πιο μετά από περιέργεια).
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: gt on May 24, 2013, 11:30:37 am Μαλλον δεν εγινα αντιληπτος αυτη τη φορα...Εννοω πως θα αποθηκευονται...Συμφωνα με το σχημα μετα το α(1,1) θα αποθηκευεται το α(1,2) ή το α(2,2)...Αυτο εννοω οχι εμφανισιακα...Γιατι στο σχημα δεν διευκρινιζεται ο τροπος αποθηκευσης...
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: elefmylo on May 25, 2013, 00:32:40 am Να ρωτήσω, την αρχική διεύθυνση π.χ. $α0 του πίνακα Α πως θα τη βαλουμε...?Δηλαδή που θα τη βρούμε?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 25, 2013, 01:29:31 am Μαλλον δεν εγινα αντιληπτος αυτη τη φορα...Εννοω πως θα αποθηκευονται...Συμφωνα με το σχημα μετα το α(1,1) θα αποθηκευεται το α(1,2) ή το α(2,2)...Αυτο εννοω οχι εμφανισιακα...Γιατι στο σχημα δεν διευκρινιζεται ο τροπος αποθηκευσης... Υποθέτω ότι εσύ μπορείς να ορίζεις τη σειρά με την οποία θα αποθηκεύονται τα στοιχεία. Νομίζω αναφέρει κάτι η εκφώνηση.Να ρωτήσω, την αρχική διεύθυνση π.χ. $α0 του πίνακα Α πως θα τη βαλουμε...?Δηλαδή που θα τη βρούμε? Θα μειώσεις κατά κατάλληλο αριθμό την τιμή του καταχωρητή $sp και θα βάλεις τον καταχωρητή $a0 να δείχνει σε μια σχετική θέση από τον $sp. Για να γίνω πιο κατανοητός: Έστω ότι έχεις δύο πίνακες 2x2. O ένας πίνακας προσπελάζεται από τον $a0 και ο άλλος από τον $a1. Γνωρίζεις επίσης ότι αποθηκεύουν float (4 bytes). Άρα έχεις συνολικά 2*2*2*4 = 32 bytes. Άρα μπορείς να πεις: ... addi $sp, $sp, -32 add $a0, $sp, $zero addiu $a1, $sp, 16 ... Μετά θα μπεις σε διπλό βρόχο και θα διαβάσεις τα αντίστοιχα στοιχεία. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: elefmylo on May 25, 2013, 01:32:28 am Μαλλον δεν εγινα αντιληπτος αυτη τη φορα...Εννοω πως θα αποθηκευονται...Συμφωνα με το σχημα μετα το α(1,1) θα αποθηκευεται το α(1,2) ή το α(2,2)...Αυτο εννοω οχι εμφανισιακα...Γιατι στο σχημα δεν διευκρινιζεται ο τροπος αποθηκευσης... Υποθέτω ότι εσύ μπορείς να ορίζεις τη σειρά με την οποία θα αποθηκεύονται τα στοιχεία. Νομίζω αναφέρει κάτι η εκφώνηση.Να ρωτήσω, την αρχική διεύθυνση π.χ. $α0 του πίνακα Α πως θα τη βαλουμε...?Δηλαδή που θα τη βρούμε? Θα μειώσεις κατά κατάλληλο αριθμό την τιμή του καταχωρητή $sp και θα βάλεις τον καταχωρητή $a0 να δείχνει σε μια σχετική θέση από τον $sp. Για να γίνω πιο κατανοητός: Έστω ότι έχεις δύο πίνακες 2x2. O ένας πίνακας προσπελάζεται από τον $a0 και ο άλλος από τον $a1. Γνωρίζεις επίσης ότι αποθηκεύουν float (4 bytes). Άρα έχεις συνολικά 2*2*2*4 = 32 bytes. Άρα μπορείς να πεις: ... addi $sp, $sp, -32 add $a0, $sp, $zero addiu $a1, $sp, 16 ... Μετά θα μπεις σε διπλό βρόχο και θα διαβάσεις τα αντίστοιχα στοιχεία. Οκ κατάλαβα...Ευχαριστω! Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: iGNUcious on May 25, 2013, 12:14:35 pm Code: Void mm ( double a[][]), double b[][], double c[][]) Μήπως ο σωστός αλγόριθμός όταν έχεις πίνακα d για έξοδο, αντί για x,είναι έτσι ? Code: Void mm ( double a[][]), double b[][], double c[][]) Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: 020400e on May 25, 2013, 13:11:33 pm Μαλλον δεν εγινα αντιληπτος αυτη τη φορα...Εννοω πως θα αποθηκευονται...Συμφωνα με το σχημα μετα το α(1,1) θα αποθηκευεται το α(1,2) ή το α(2,2)...Αυτο εννοω οχι εμφανισιακα...Γιατι στο σχημα δεν διευκρινιζεται ο τροπος αποθηκευσης... Υποθέτω ότι εσύ μπορείς να ορίζεις τη σειρά με την οποία θα αποθηκεύονται τα στοιχεία. Νομίζω αναφέρει κάτι η εκφώνηση.Να ρωτήσω, την αρχική διεύθυνση π.χ. $α0 του πίνακα Α πως θα τη βαλουμε...?Δηλαδή που θα τη βρούμε? Θα μειώσεις κατά κατάλληλο αριθμό την τιμή του καταχωρητή $sp και θα βάλεις τον καταχωρητή $a0 να δείχνει σε μια σχετική θέση από τον $sp. Για να γίνω πιο κατανοητός: Έστω ότι έχεις δύο πίνακες 2x2. O ένας πίνακας προσπελάζεται από τον $a0 και ο άλλος από τον $a1. Γνωρίζεις επίσης ότι αποθηκεύουν float (4 bytes). Άρα έχεις συνολικά 2*2*2*4 = 32 bytes. Άρα μπορείς να πεις: ... addi $sp, $sp, -32 add $a0, $sp, $zero addiu $a1, $sp, 16 ... Μετά θα μπεις σε διπλό βρόχο και θα διαβάσεις τα αντίστοιχα στοιχεία. Γίνεται να κάνουμε την άσκση χωρίς να χρησιμοποιήσουμε τον $sp ?? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Eragon on May 25, 2013, 13:47:54 pm Μαλλον δεν εγινα αντιληπτος αυτη τη φορα...Εννοω πως θα αποθηκευονται...Συμφωνα με το σχημα μετα το α(1,1) θα αποθηκευεται το α(1,2) ή το α(2,2)...Αυτο εννοω οχι εμφανισιακα...Γιατι στο σχημα δεν διευκρινιζεται ο τροπος αποθηκευσης... Υποθέτω ότι εσύ μπορείς να ορίζεις τη σειρά με την οποία θα αποθηκεύονται τα στοιχεία. Νομίζω αναφέρει κάτι η εκφώνηση.Να ρωτήσω, την αρχική διεύθυνση π.χ. $α0 του πίνακα Α πως θα τη βαλουμε...?Δηλαδή που θα τη βρούμε? Θα μειώσεις κατά κατάλληλο αριθμό την τιμή του καταχωρητή $sp και θα βάλεις τον καταχωρητή $a0 να δείχνει σε μια σχετική θέση από τον $sp. Για να γίνω πιο κατανοητός: Έστω ότι έχεις δύο πίνακες 2x2. O ένας πίνακας προσπελάζεται από τον $a0 και ο άλλος από τον $a1. Γνωρίζεις επίσης ότι αποθηκεύουν float (4 bytes). Άρα έχεις συνολικά 2*2*2*4 = 32 bytes. Άρα μπορείς να πεις: ... addi $sp, $sp, -32 add $a0, $sp, $zero addiu $a1, $sp, 16 ... Μετά θα μπεις σε διπλό βρόχο και θα διαβάσεις τα αντίστοιχα στοιχεία. Γίνεται να κάνουμε την άσκση χωρίς να χρησιμοποιήσουμε τον $sp ?? Code: main: Code: main: Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 25, 2013, 14:14:43 pm Code: Void mm ( double a[][]), double b[][], double c[][]) Μήπως ο σωστός αλγόριθμός όταν έχεις πίνακα d για έξοδο, αντί για x,είναι έτσι ? Code: Void mm ( double a[][]), double b[][], double c[][]) Ναι, ο πρώτος κώδικας είναι λανθασμένος. Το δικό σου παράδειγμα είναι σωστό. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: elefmylo on May 25, 2013, 19:11:24 pm Τις μεταβλητές που εισάγονται τις θέλει double οπωσδήποτε ή ότι να ναι π.χ. int?
Και θέλει σχόλια όπως τη προηγούμενη εργασια...? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Fcoriolis on May 25, 2013, 19:21:58 pm χωρίς σχόλια και οι μεταβλητές καλό είναι να είναι double αλλά και με float δεν νομίζω να πειράζει!
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 26, 2013, 04:33:15 am Τις μεταβλητές που εισάγονται τις θέλει double οπωσδήποτε ή ότι να ναι π.χ. int? Και θέλει σχόλια όπως τη προηγούμενη εργασια...? Double ή float οπωσδήποτε. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: sophie22 on May 26, 2013, 13:05:09 pm Οταν παω να διαβασω τους πινακες τρεχω το προγραμμα στο PCSpim αλλα δεν μου εμφανιζει τα στοιχεια για να ζητησει τα αποτελεσματα παρα μονο οταν πατησω πρωτα το STOP! Λογικα δεν θα επρεπε να συμβαινει αυτο!Ξερει καποιος τι μπορει να φταιει?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ Post by: Exomag on May 26, 2013, 13:28:40 pm Οταν παω να διαβασω τους πινακες τρεχω το προγραμμα στο PCSpim αλλα δεν μου εμφανιζει τα στοιχεια για να ζητησει τα αποτελεσματα παρα μονο οταν πατησω πρωτα το STOP! Λογικα δεν θα επρεπε να συμβαινει αυτο!Ξερει καποιος τι μπορει να φταιει? Βάλε στο post σου τον κώδικα (3-4 σειρές) όπου καλείς τη syscall για να διβαστούν τα δεδομένα, για να δούμε τι φταίει. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Eragon on May 26, 2013, 14:07:36 pm Δεν έχει κανένα πρόβλημα ο κώδικας
Δοκίμασε να ανοιγοκλείσεις το pcspim και να φορτώσεις ξανα το πρόγραμμα.Πριν το φορτώσεις,πήγαινε στις επιλογές προσομοίωσης και δες αν ειναι οι ρυθμίσεις όπως στο συνημμένο. Ακόμη καλύτερα,κατέβασε το qtspim. :) Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Fcoriolis on May 26, 2013, 14:27:52 pm Ξερει καποιος τι μπορει να φταιει? O PCSPIM!Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: sophie22 on May 26, 2013, 14:34:11 pm Εχω αρχισει να το πιστευω!!!! Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 26, 2013, 15:06:39 pm Εμένα μου δούλευε μια χαρά και ο PCSpim, οπότε δεν παίζει να φταίει το πρόγραμμα αυτό καθεαυτό.
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: zidan on May 26, 2013, 15:58:18 pm Όταν δίνω ένα αριθμό ,τον αποθηκεύω π.χ. στο f4 δηλ (add $f4,v0,$zero) κι μετά κανω (sw $f4,$a0($gp)) ή λαθος???
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: elefmylo on May 26, 2013, 17:00:43 pm Ρε παιδιά εσάς την εντολή swcl και lwcl σας την αναγνωρίζει ο Qt spim...?Με int μια χαρά μου δουλεύει το πρόγραμμα!
Όμως όταν πάω να το τρέξω με float δε δουλεύει...τις πταίει? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Lord on May 26, 2013, 17:13:30 pm Η εντολή είναι swc1 και lwc1 , όχι με I . ;)
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: elefmylo on May 26, 2013, 17:18:55 pm Η εντολή είναι swc1 και lwc1 , όχι με I . ;) χαχαχα ελεος! ναι αλλά και πάλι μου βγάζει λάθος το διάβασμα τύπου float... Code: mul $t1,$s0,3#diavasma edit:οκ το βρήκα! Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 27, 2013, 17:39:15 pm μπορει καποιος να γραψει ενα παραδειγμα του πως σκατα διαβαζουμε δεδομενα??
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 27, 2013, 17:52:14 pm μπορει καποιος να γραψει ενα παραδειγμα του πως σκατα διαβαζουμε δεδομενα?? Code:
Αυτό ο συνδυασμός εντολών θα περιμένει από το πληκτρολόγιο ένα νούμερο. Αυτό το νούμερο (που θα είναι τύπου double, γιατί ο κωδικός 7 αντιστοιχεί στην ανάγνωση double) θα αποθηκευτεί στον καταχωρητή $f0. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 27, 2013, 17:53:46 pm επομενως αναλογα με τον κωδικο ο μεταγλωτιστης περιμενει εναν αριθμο που θα τον αποθηκευσει στους αντιστοιχους καταχωρητες (εννοω για float,int,double float κλπ) ?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 27, 2013, 17:57:27 pm επομενως αναλογα με τον κωδικο ο μεταγλωτιστης περιμενει εναν αριθμο που θα τον αποθηκευσει στους αντιστοιχους καταχωρητες (εννοω για float,int,double float κλπ) ? Σωστά κατάλαβες. Δες εδώ (http://courses.missouristate.edu/kenvollmar/mars/help/syscallhelp.html) για λεπτομέρειες. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: El Niño on May 27, 2013, 19:25:15 pm μπορει καποιος να πει ποιο κομματι απο το βιβλιο χρειαζεται για αυτη την εργασια?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: dimi93gr on May 27, 2013, 20:28:43 pm Τα δεδομένα θα τα βάλουμε ένα ένα ή με λούπες για καθε πίνακα όπως π.χ στη C++;
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 27, 2013, 20:29:13 pm Τα δεδομένα θα τα βάλουμε ένα ένα ή με λούπες για καθε πίνακα όπως π.χ στη C++; Με λούπα θα ήταν το πιο σωστό/ορθόδοξο. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Silvo the Beautiful on May 27, 2013, 22:03:24 pm ΕΧΩ ΣΠΑΣΕΙ ΤΟ ΚΕΦΑΛΙ ΜΟΥ!
ΑΠΟΡΙΑ ΛΟΙΠΟΝ. Θελουμε να δημιουργησουμε 3χ3 πινακα.... Στο βιβλιο για να μετακινηθουμε θέσεις έχοντας έναν πίνακα 32χ32 κάνει sll $t2, $s0, 5 Καταλαβαίνω οτι 2^5 κάνει 32... Αν είχαμε 2χ2 θα βάζαμε απλά 1. Όμως στον 3χ3 που είναι ανάμεσα στο 1 και στο 2 που δινει 4 τι κάνουμε?????????? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Eragon on May 27, 2013, 22:19:13 pm ΕΧΩ ΣΠΑΣΕΙ ΤΟ ΚΕΦΑΛΙ ΜΟΥ! sll $t2,$s0,5 = li $t0,32 και mul $t2,$s0,$t0ΑΠΟΡΙΑ ΛΟΙΠΟΝ. Θελουμε να δημιουργησουμε 3χ3 πινακα.... Στο βιβλιο για να μετακινηθουμε θέσεις έχοντας έναν πίνακα 32χ32 κάνει sll $t2, $s0, 5 Καταλαβαίνω οτι 2^5 κάνει 32... Αν είχαμε 2χ2 θα βάζαμε απλά 1. Όμως στον 3χ3 που είναι ανάμεσα στο 1 και στο 2 που δινει 4 τι κάνουμε?????????? απλά κάνεις τον πολλαπλασιασμό κανονικα,η sll ειναι απλως για να κανεις πολλαπλασιασμο με μια δυναμη του 2 Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Silvo the Beautiful on May 28, 2013, 01:01:38 am όχι δνε εννοώ αυτο... πως γίνεται να κάνω λοιπον πολλαπλασιασμό επι 3?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: zidan on May 28, 2013, 01:05:50 am όχι δνε εννοώ αυτο... πως γίνεται να κάνω λοιπον πολλαπλασιασμό επι 3? mul $t1,$t1,3Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 28, 2013, 04:10:22 am οταν λεει οτι οι διευθυνσεις βασης ειναι παραμετροι εννοει οτι θα τις διαβασουμε στη μειν?? βασικα πως δινουμε τις διευθυνσης βασεις μπορει να με διαφωτισει καποιος??
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ Post by: Silvo the Beautiful on May 28, 2013, 10:07:16 am ΄θελω να δημιουργήσω το i*3.... Βασικά καθηστε να σας βάλω το κομμάτι κώδικα
sll $t0, $s0, 1 #t0=2*i add $t0, $s0, $s0 #t0=3*i add $t0, $t0, $s1 #t0=3*i +j sll $t0, $t0, 3 #t0=(3*i +j)*8 Αυτό βασικά πρέπει να είναι λάθος!!! Γιατί δεν γίνεται σωστά ο πολλαπλασιασμός των πινάκων μετά... Υποθέτω τοι το add δεν μου κάνει τη δουλεια που θέλω... Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Jim D. Ace on May 28, 2013, 10:29:48 am στον s0 εχει το i ε;
τοτε το πρωτο add παει και βαζει στον t0 i + i= 2*i Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ Post by: Eragon on May 28, 2013, 10:34:02 am ΄θελω να δημιουργήσω το i*3.... Βασικά καθηστε να σας βάλω το κομμάτι κώδικα λεμε δε χρειαζεται να προσπαθησεις να το κανεις με sll !!!sll $t0, $s0, 1 #t0=2*i add $t0, $s0, $s0 #t0=3*i add $t0, $t0, $s1 #t0=3*i +j sll $t0, $t0, 3 #t0=(3*i +j)*8 Αυτό βασικά πρέπει να είναι λάθος!!! Γιατί δεν γίνεται σωστά ο πολλαπλασιασμός των πινάκων μετά... Υποθέτω τοι το add δεν μου κάνει τη δουλεια που θέλω... αν στον $s0 έχεις το i τοτε βάλε σε εναν καταχωρητη την τιμη 3 ως εξης li $t0,3 και μετα πολλαπλασιασε τους δυο καταχωρητες. mul $s0,$s0,$t0 Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Eragon on May 28, 2013, 10:36:23 am στον s0 εχει το i ε; ναι ακριβως,του βαζει το 4*i , οπου i το αρχικοτοτε το πρωτο add παει και βαζει στον t0 i + i= 2*i ειναι σαν να κανεις sll $t0,$s0,2 Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Silvo the Beautiful on May 28, 2013, 14:41:53 pm τωρα ένιωσα!!!! Το δοκιμάζω!
Υποθέτω εσείς έτσι το κάνατε? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Silvo the Beautiful on May 28, 2013, 15:28:38 pm Επίσης!!! Πρέπει να πολλαπλασιάζω και το j επι 3???? Μήπως αυτό είναι το πιο χοντρό λάθος πουτ κάνω?
Γενικά αν μπορεί κάποιος να ανεβάσει πως άλλαζε τις τιμές των i,j γιατί βγάζω ότι να ναι αποτέλεσμα με σωστές πράξεις. Είμαι σίγουρος ότι παίρνω λάθος i,j τελικά Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Pjr on May 28, 2013, 15:41:20 pm Καλησπέρα, θα ήθελα κάποιος (με όρεξη) να μου δωσει τα φωτα του για το πρωτο ερωτημα.
1)Πρέπει να κάνουμε χωρο στη στοίβα για (3*3)*3*4=108bytes για τα στοιχεία του πίνακα τύπου float και 12 bytes για τους $s0,$s1,$s2 που αντιστοιχούν στα i,j,k?? 2)Διαβάζουμε καθε πίνακα ξεχωριστά με δύο loop? Αν ναι πως θα τα αποθηκευσουμε στη στοίβα και πως θα το κάνω να φαίνεται στην κονσολα για παραδειγμα α(1,1)=... και να δίνω εγω τον αριθμό? 3)Η ετικέτα exit1 του πρωτου loop δηλαδή όταν το i γίνει μεγαλυτερο του 3, τι θα περιέχει? Αυτά τα λίγα... Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ Post by: Silvo the Beautiful on May 28, 2013, 15:47:32 pm γιατί 3*3*3???
3χ3 ειναι οι πινακες που εχεις... Θα χρειαστεις 3*3*4 και αν θες διπλη ακριβεια επι 8 δηλαδή .space 36 ή .space 72 Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Pjr on May 28, 2013, 16:01:59 pm (3*3)*4 ή (3*3)*8 για τα στοιχεία του ενός πίνακα. Εγω έλεγα και για τους τρεις
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Silvo the Beautiful on May 28, 2013, 16:32:38 pm καλύτερα δέσμευεσε ξεχωριστά χώρο για κάθε πίνακα
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: απλυτος on May 28, 2013, 19:01:08 pm μπορεί να σκεφτεί κανείς ποιος ο λόγος να βγάζει συντακτικό λάθος στην παρακάτω εντολή;;
Code: sw $f0, $t3 και ο $t3 είναι η κατάλληλη θέση μνήμης σίγουρα. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: απλυτος on May 28, 2013, 19:15:18 pm μπορεί να σκεφτεί κανείς ποιος ο λόγος να βγάζει συντακτικό λάθος στην παρακάτω εντολή;; και γενικά ο spim βγάζει συνέχεια errors όταν κάνω πράξεις με καταχωρητές $fCode: sw $f0, $t3 και ο $t3 είναι η κατάλληλη θέση μνήμης σίγουρα. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Ephialtes on May 28, 2013, 19:30:20 pm Κρισιμη ερωτηση, γιατι ειμαι ετοιμος να τα παρατησω... Αν δεν παραδωσουμε την 2η εργασια, μπορουμε να συμμετεχουμε στην εργαστηριακη εξεταση;
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Luffy on May 28, 2013, 21:15:15 pm μπορεί να σκεφτεί κανείς ποιος ο λόγος να βγάζει συντακτικό λάθος στην παρακάτω εντολή;; Code: sw $f0, $t3 και ο $t3 είναι η κατάλληλη θέση μνήμης σίγουρα. και γενικά ο spim βγάζει συνέχεια errors όταν κάνω πράξεις με καταχωρητές $f Ετσι οπως εχεις γραψει την εντολη ειναι λαθος. Οι νταμπλ και φλοατ μεταβλητες χρησιμοποιουν διαφορετικες εντολες. Δες αυτο http://www.doc.ic.ac.uk/lab/secondyear/spim/node20.html για τις εντολες. Αυτο που θες να γραψεις στον κωδικα σου λογικα ειναι : s.d $f0, 0($t3) για νταμπλ και s.s $f0, 0($t3) για φλοατ αναλογα. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: απλυτος on May 28, 2013, 23:14:46 pm Εντωμεταξύ ο κώδικας στην c ούτε που δουλεύει, το for (j=0; j!=0; j=j+1) δεν τρέχει ποτέ, άρα όλο το loop δεν κάνει τίποτα. Go figure... Γενικά, είχε πολλά λάθη η εκφώνηση τα οποία διόρθωσα. Αυτό μου είχε ξεφύγει ;) Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: zidan on May 28, 2013, 23:46:15 pm Η παράδοση θα είναι όπως τη προηγούμενη εργασία??
δηλ. (όνομα_αριθ.μητ._s)..? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Delph1lak on May 28, 2013, 23:54:54 pm Κρισιμη ερωτηση, γιατι ειμαι ετοιμος να τα παρατησω... Αν δεν παραδωσουμε την 2η εργασια, μπορουμε να συμμετεχουμε στην εργαστηριακη εξεταση; λογικα ναι...Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Delph1lak on May 28, 2013, 23:57:56 pm Μαλλον δεν εγινα αντιληπτος αυτη τη φορα...Εννοω πως θα αποθηκευονται...Συμφωνα με το σχημα μετα το α(1,1) θα αποθηκευεται το α(1,2) ή το α(2,2)...Αυτο εννοω οχι εμφανισιακα...Γιατι στο σχημα δεν διευκρινιζεται ο τροπος αποθηκευσης... Υποθέτω ότι εσύ μπορείς να ορίζεις τη σειρά με την οποία θα αποθηκεύονται τα στοιχεία. Νομίζω αναφέρει κάτι η εκφώνηση.Να ρωτήσω, την αρχική διεύθυνση π.χ. $α0 του πίνακα Α πως θα τη βαλουμε...?Δηλαδή που θα τη βρούμε? Θα μειώσεις κατά κατάλληλο αριθμό την τιμή του καταχωρητή $sp και θα βάλεις τον καταχωρητή $a0 να δείχνει σε μια σχετική θέση από τον $sp. Για να γίνω πιο κατανοητός: Έστω ότι έχεις δύο πίνακες 2x2. O ένας πίνακας προσπελάζεται από τον $a0 και ο άλλος από τον $a1. Γνωρίζεις επίσης ότι αποθηκεύουν float (4 bytes). Άρα έχεις συνολικά 2*2*2*4 = 32 bytes. Άρα μπορείς να πεις: ... addi $sp, $sp, -32 add $a0, $sp, $zero addiu $a1, $sp, 16 ... Μετά θα μπεις σε διπλό βρόχο και θα διαβάσεις τα αντίστοιχα στοιχεία. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Eragon on May 29, 2013, 00:03:07 am Μαλλον δεν εγινα αντιληπτος αυτη τη φορα...Εννοω πως θα αποθηκευονται...Συμφωνα με το σχημα μετα το α(1,1) θα αποθηκευεται το α(1,2) ή το α(2,2)...Αυτο εννοω οχι εμφανισιακα...Γιατι στο σχημα δεν διευκρινιζεται ο τροπος αποθηκευσης... Υποθέτω ότι εσύ μπορείς να ορίζεις τη σειρά με την οποία θα αποθηκεύονται τα στοιχεία. Νομίζω αναφέρει κάτι η εκφώνηση.Να ρωτήσω, την αρχική διεύθυνση π.χ. $α0 του πίνακα Α πως θα τη βαλουμε...?Δηλαδή που θα τη βρούμε? Θα μειώσεις κατά κατάλληλο αριθμό την τιμή του καταχωρητή $sp και θα βάλεις τον καταχωρητή $a0 να δείχνει σε μια σχετική θέση από τον $sp. Για να γίνω πιο κατανοητός: Έστω ότι έχεις δύο πίνακες 2x2. O ένας πίνακας προσπελάζεται από τον $a0 και ο άλλος από τον $a1. Γνωρίζεις επίσης ότι αποθηκεύουν float (4 bytes). Άρα έχεις συνολικά 2*2*2*4 = 32 bytes. Άρα μπορείς να πεις: ... addi $sp, $sp, -32 add $a0, $sp, $zero addiu $a1, $sp, 16 ... Μετά θα μπεις σε διπλό βρόχο και θα διαβάσεις τα αντίστοιχα στοιχεία. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 00:13:35 am Μαλλον δεν εγινα αντιληπτος αυτη τη φορα...Εννοω πως θα αποθηκευονται...Συμφωνα με το σχημα μετα το α(1,1) θα αποθηκευεται το α(1,2) ή το α(2,2)...Αυτο εννοω οχι εμφανισιακα...Γιατι στο σχημα δεν διευκρινιζεται ο τροπος αποθηκευσης... Υποθέτω ότι εσύ μπορείς να ορίζεις τη σειρά με την οποία θα αποθηκεύονται τα στοιχεία. Νομίζω αναφέρει κάτι η εκφώνηση.Να ρωτήσω, την αρχική διεύθυνση π.χ. $α0 του πίνακα Α πως θα τη βαλουμε...?Δηλαδή που θα τη βρούμε? Θα μειώσεις κατά κατάλληλο αριθμό την τιμή του καταχωρητή $sp και θα βάλεις τον καταχωρητή $a0 να δείχνει σε μια σχετική θέση από τον $sp. Για να γίνω πιο κατανοητός: Έστω ότι έχεις δύο πίνακες 2x2. O ένας πίνακας προσπελάζεται από τον $a0 και ο άλλος από τον $a1. Γνωρίζεις επίσης ότι αποθηκεύουν float (4 bytes). Άρα έχεις συνολικά 2*2*2*4 = 32 bytes. Άρα μπορείς να πεις: ... addi $sp, $sp, -32 add $a0, $sp, $zero addiu $a1, $sp, 16 ... Μετά θα μπεις σε διπλό βρόχο και θα διαβάσεις τα αντίστοιχα στοιχεία. Στο συγκεκριμένο παράδειγμα θες να έχεις μνήμη για 2 πίνακες 2x2. Απλά μεταβάλλεις τις τιμές των $a0/$a1 ώστε να δείχνουν στην αρχή της δεσμευόμενης μνήμης για κάθε πίνακα. Ο κάθε πίνακας του παραδείγματος απαιτεί 16 bytes. Έπειτα θα κάνεις αποθήκευση των τιμών των πινάκων με σχετική αναφορά από τους συγκερκιμένους καταχωρητές. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: zidan on May 29, 2013, 00:37:16 am Η παράδοση θα είναι όπως τη προηγούμενη εργασία?? +1δηλ. (όνομα_αριθ.μητ._s)..? :-\ :-\ :-\ Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 01:01:30 am Η παράδοση θα είναι όπως τη προηγούμενη εργασία?? +1δηλ. (όνομα_αριθ.μητ._s)..? :-\ :-\ :-\ Δεν αναφέρει κάτι διαφορετικό, άρα ναι. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 29, 2013, 03:56:54 am πως θα γινει στη λουπα διαβασματος και εκτυπωσης να εκτυπωσω τη 1η φορα πχ α(1,1)= και τη 2η φορα α(1,2)= ???
εννοω πως θα αυξανω τους δεικτες αν τα διαβαζω ως συμβολοσειρες?? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 04:52:57 am Θα σε βοηθήσω. Στη C++ θα έγραφες π.χ. cout << "a(" << i << "," << j << ")=";
Κάνε το ίδιο και δω. Αυτό που θα χρειαστεί είναι να αποθηκεύσεις τα επιμέρους strings στο τμήμα δεδομένων και για τους δείκτες θα χρησιμοποιείς τις τιμές των καταχωρητών αφού τις αυξήσεις κατά 1. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 29, 2013, 11:25:54 am κααταλαβα... εγω προσπαθουσα να το κανω σε φαση cout<<"a(1,1)="<< οποτε θα χρειαζοταν να αποθηκευσω 27 string..
thx ^beer^ Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: El Niño on May 29, 2013, 12:56:17 pm δεν χρειαζεται να γραψουμε διπλα απο καθε εντολη σχολια για το τι κανει οπως στην 1η ετσι?
δεν λεει πουθενα οτι θελει κατι τετοιο... Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 13:05:22 pm δεν χρειαζεται να γραψουμε διπλα απο καθε εντολη σχολια για το τι κανει οπως στην 1η ετσι? δεν λεει πουθενα οτι θελει κατι τετοιο... Δεν χρειάζεται Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: El Niño on May 29, 2013, 16:46:17 pm δεν χρειαζεται να γραψουμε διπλα απο καθε εντολη σχολια για το τι κανει οπως στην 1η ετσι? δεν λεει πουθενα οτι θελει κατι τετοιο... Δεν χρειάζεται σχετικα με τις υποδειξεις? ειμαστε υποχρεωμενοι να τις ακολουθησουμε? οχι ε? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Silvo the Beautiful on May 29, 2013, 17:04:22 pm Επίσης!!! Πρέπει να πολλαπλασιάζω και το j επι 3???? Μήπως αυτό είναι το πιο χοντρό λάθος πουτ κάνω? Γενικά αν μπορεί κάποιος να ανεβάσει πως άλλαζε τις τιμές των i,j γιατί βγάζω ότι να ναι αποτέλεσμα με σωστές πράξεις. Είμαι σίγουρος ότι παίρνω λάθος i,j τελικά Μπορεί τελικά να γράψει κάποιος πως το έκανε? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 17:10:29 pm Επίσης!!! Πρέπει να πολλαπλασιάζω και το j επι 3???? Μήπως αυτό είναι το πιο χοντρό λάθος πουτ κάνω? Γενικά αν μπορεί κάποιος να ανεβάσει πως άλλαζε τις τιμές των i,j γιατί βγάζω ότι να ναι αποτέλεσμα με σωστές πράξεις. Είμαι σίγουρος ότι παίρνω λάθος i,j τελικά Μπορεί τελικά να γράψει κάποιος πως το έκανε? Εξαρτάται πώς θες να αποθηκεύεις τα στοιχεία στη μνήμη. Ο κλασικός τρόπος είναι να αποθηκεύσεις κάθε φορά τις γραμμές, άρα για να κάνεις προσπέλαση του στοιχείου i,j κάνεις την πράξη (i*3 + j)*8 όπου 8 το μέγεθος του double (αντιστοίχως 4 για float). Θα πρέπει να χρησιμοποιήσεις έναν καταχωρητή προσωρινά για να αποθηκεύσεις το 3. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Silvo the Beautiful on May 29, 2013, 18:11:58 pm πρακτικά αυτό κάνω αλλά με βγάζει ότι να ναι αποτέλεσμα.... Δοκίμασα τώρα και αυτό και γίναν ακόμα χειρότερα τα πράγματα
mult $s0, $s6 mflo $t0 add $t0, $t0, $s1 #t0=3*i +j οπου ο s6 εχει την τιμή 3 Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 18:43:44 pm πρακτικά αυτό κάνω αλλά με βγάζει ότι να ναι αποτέλεσμα.... Δοκίμασα τώρα και αυτό και γίναν ακόμα χειρότερα τα πράγματα mult $s0, $s6 mflo $t0 add $t0, $t0, $s1 #t0=3*i +j οπου ο s6 εχει την τιμή 3 Επίσης ο πολλαπλασιασμός με 8 και έπειτα θα πρέπει να προσθέσεις σε αυτό που θα βρεις τη διεύθυνση του πίνακα, διότι κινείσαι σχετικά. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Silvo the Beautiful on May 29, 2013, 18:53:16 pm Δεν δουλευει... Ειλικρινα δεν ξερω τι να κανω.... Παιζει κανενας να μπορει να ψαξει τι λαθος κανω? Ζηταω πολλα τωρα αλλα θα σπασω το κεφαλι μου πραγματικα
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 19:32:50 pm Δεν δουλευει... Ειλικρινα δεν ξερω τι να κανω.... Παιζει κανενας να μπορει να ψαξει τι λαθος κανω? Ζηταω πολλα τωρα αλλα θα σπασω το κεφαλι μου πραγματικα Στείλε το, θα το δω μόλις τελειώσω το λολ Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: TrueForce on May 29, 2013, 20:10:10 pm li $t1, '('
li $v0, 11 move $a0, $t1 syscall Μπορω να το κανω αυτο; Α ναι, πειραζει αν το li $t1, '(' ειναι εκτος της επαναληψης; Ρωταω γιατι ειναι temp καταχωρητης. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 29, 2013, 20:13:14 pm li $t1, '(' li $v0, 11 move $a0, $t1 syscall Μπορω να το κανω αυτο; Α ναι, πειραζει αν το li $t1, '(' ειναι εκτος της επαναληψης; Ρωταω γιατι ειναι temp καταχωρητης. Νομίζω πως θα δουλεύει σωστά. Οι temp καταχωρητές δεν έχουν κάποια πρακτική διαφορά με τους υπόλοιπους (δεν μηδενίζονται, για παράδειγμα, αυτόματα ή κάτι τέτοιο). Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: TrueForce on May 29, 2013, 20:19:38 pm Thanks! Και κατι αλλο. Για τους πινακες εχω δεσμευσει χωρο με τη μορφη:
.float 0,0,0,0,0,0,0,0,0 Γινεται να το κανω αυτο; Η πρεπει να δεσμευσω αλλιως χωρο; Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 29, 2013, 20:23:51 pm Thanks! Και κατι αλλο. Για τους πινακες εχω δεσμευσει χωρο με τη μορφη: .float 0,0,0,0,0,0,0,0,0 Γινεται να το κανω αυτο; Η πρεπει να δεσμευσω αλλιως χωρο; Νομίζω πως γίνεται. Βέβαια, αν υπάρχει κάποιο θέμα θα το καταλάβεις με το που θα πας να τρέξεις το πρόγραμμα σου ;) Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: TrueForce on May 29, 2013, 20:26:01 pm Πως αλλιως μπορω να δεσμευσω χωρο; Thanks και παλι. ^^
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 29, 2013, 20:27:59 pm Πως αλλιως μπορω να δεσμευσω χωρο; Thanks και παλι. ^^ Μπορείς, για παράδειγμα, να κάνεις Code: Α: .space 36 Έτσι θα έχει δεσμεύσει 36, δηλαδή 4*sizeof(float), byte για τον πίνακα Α. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 20:28:17 pm Πως αλλιως μπορω να δεσμευσω χωρο; Thanks και παλι. ^^ Δοκίμασε .space και μετά το χώρο που θες να δεσμεύσεις. π.χ. .space 72 Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: TrueForce on May 29, 2013, 20:32:39 pm Ευχαριστω πολυ! ;D
edit: οι float πιανουν 4 ή 8 byte; Με την space δεσμευουμε byte, ετσι; Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 20:36:23 pm Ευχαριστω πολυ! ;D edit: οι float πιανουν 4 ή 8 byte; Με την space δεσμευουμε byte, ετσι; 4 byte δεσμεύουν οι float. Ναι, με τη space δεσμεύουμε bytes. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Αλντεμπαράν on May 29, 2013, 21:09:02 pm πρέπει να γίνει έλεγχος για πιθανή υπερχείλιση στο αποτέλεσμα της πράξεις του πολλαπλασιασμού???
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 29, 2013, 21:11:04 pm πρέπει να γίνει έλεγχος για πιθανή υπερχείλιση στο αποτέλεσμα της πράξεις του πολλαπλασιασμού??? μπα Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 30, 2013, 05:52:52 am Θα σε βοηθήσω. Στη C++ θα έγραφες π.χ. cout << "a(" << i << "," << j << ")="; γινεται να το γραψεις γιατι το προσπαθησα σε ενα μονο πινακα και μου βγαζει αλλα ντ'αλλων??Κάνε το ίδιο και δω. Αυτό που θα χρειαστεί είναι να αποθηκεύσεις τα επιμέρους strings στο τμήμα δεδομένων και για τους δείκτες θα χρησιμοποιείς τις τιμές των καταχωρητών αφού τις αυξήσεις κατά 1. Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Falergon on May 30, 2013, 07:43:37 am Είναι υποχρεωτικό να βάλουμε τους πίνακες στα a0,a1,a2? Γιατί μετά δημιουργεί προβλήματα με syscall. Και το d που να το βάλουμε?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Exomag on May 30, 2013, 09:27:36 am Είναι υποχρεωτικό να βάλουμε τους πίνακες στα a0,a1,a2? Γιατί μετά δημιουργεί προβλήματα με syscall. Και το d που να το βάλουμε? Μπορείς να βάλεις προσωρινά κάπου αλλού τους πίνακες (για να κάνεις τις syscall που χρειάζεται), και μετά να τους ξαναβάλεις πίσω στα $a0, $a1, $a2. Αφού δεν ξεκαθαρίζει κάτι για τον D, μπορείς να τον βάλεις όπου θες (μια καλή ιδέα θα ήταν στον $v0, ως επιστρεφόμενη τιμή του προγράμματος που γράφεις). Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: El Niño on May 30, 2013, 11:46:16 am Είναι υποχρεωτικό να βάλουμε τους πίνακες στα a0,a1,a2? Γιατί μετά δημιουργεί προβλήματα με syscall. Και το d που να το βάλουμε? Μπορείς να βάλεις προσωρινά κάπου αλλού τους πίνακες (για να κάνεις τις syscall που χρειάζεται), και μετά να τους ξαναβάλεις πίσω στα $a0, $a1, $a2. Αφού δεν ξεκαθαρίζει κάτι για τον D, μπορείς να τον βάλεις όπου θες (μια καλή ιδέα θα ήταν στον $v0, ως επιστρεφόμενη τιμή του προγράμματος που γράφεις). Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Falergon on May 30, 2013, 17:21:56 pm Αν βγάζει μία εκ των mul η add overflow στα double τι φταίει?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: xristosak on May 30, 2013, 17:43:00 pm Αρχικά αποθηκεύουμε την διεύθυνση βάσης στον $a0. Όμως σε κάποια syscall χρησιμοποιούμε τον $a0 για κάποια συγκεκριμένη λειτουργία. Μετά την κλήση της syscall η τιμή του $a0 αλλάζει? Και θα πρέπει να κάνουμε lw $a0,0($gp) πριν την επόμενη λούπα? Ή όχι? ευχαριστώ
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: c0ndemn3d on May 30, 2013, 18:20:34 pm Αρχικά αποθηκεύουμε την διεύθυνση βάσης στον $a0. Όμως σε κάποια syscall χρησιμοποιούμε τον $a0 για κάποια συγκεκριμένη λειτουργία. Μετά την κλήση της syscall η τιμή του $a0 αλλάζει? Και θα πρέπει να κάνουμε lw $a0,0($gp) πριν την επόμενη λούπα? Ή όχι? ευχαριστώ Για να αποθηκεύσεις τα στοιχεία των πινάκων, αντί του $a0, χρησιμοποίησε κάποιον προσωρινό καταχωρητή. Μόλις τελειώσεις την ανάγνωση ΟΛΩΝ των στοιχείων, βάλε τον $a0 να δείχνει στην αρχή του πίνακα.Αν βγάζει μία εκ των mul η add overflow στα double τι φταίει? Χρησιμοποιείς add.d και mul.d ; Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ Post by: Falergon on May 30, 2013, 18:34:43 pm όταν βάζω με d μου βγάζει syntax error.
mul $t2,$s0,3 add $t5,$t2,$s2 mul $t5,$t4,8 add $t1,$a2,$t5 mul $t6,$s2,3 add $t6,$t6,$s1 mul $t6,$t6,8 add $t4,$a3,$t6 mul.d $t4,$t4,$t1 add.d $t0,$t0,$t4 Αυτό είναι το κύριο κομμάτι του loop για τον υπολογισμό. Μου βγάζει syntax error με d, και overflow αν δεν το βάλω Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Niobe on May 30, 2013, 18:53:18 pm νομιζω οτι το overflow στο βγαζει επειδη βαζεις αποτελεσμα πραξεων με double σε καταχωρητες που χωρανε ενα byte..
δοκιμασε να το κανεις με τους $f0-$f30 Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Falergon on May 30, 2013, 19:14:07 pm αν βάλω f0 στη θέση του t4 στο παραπάνω κώδικα, μου βγάζει πάλι syntax error
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Andreas_T on May 30, 2013, 20:18:28 pm Στον παρακάτω κώδικα για υπολογισμούς πινάκων έχω πρόβλημα στην αποθήκευση αποτελέσματος
(βασίζεται σε αυτόν απο σημειώσεις προσαρμοσμένος στο δικό μου κώδικα) στον $f4 δεν υπολογίζεται αποτέλεσμα(για καθε κύκλο των κ=1,2,3)? (εκει που έχω #### πριν κώδικα ήταν εναλλακτικός τρόπος αποθήκευσης που σε τύπωση μου έβγαζε ίδιο αποτέλεσμα... οποτε υποθέτω το πρόβλημα είναι ότι αποθηκεύω λάθος $f ή σε λάθος θέση) Code: li $t1, 3 # $t1 = 3 (row size/loop end) ...έλεγα μήπως κ κρατα μόνο την τιμή κ=3 βάση του παραπάνω και για αυτό έχω δοκιμάσει κ να τα αθροίζω χώρια τa γινομενa Sum(Β[k]*C[k][j] Code: mul.s $f16, $f18, $f16 # $f16 = B[i][k] * C[k][j] ...αλλά πάλι δεν μου βγαζε σωστά αποτελέσματα καμια βοήθεια? Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: A.N. on May 30, 2013, 20:44:32 pm για απλη η διπλη αρκιβεια εμεις θα το αποφασισουμε?
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: TrueForce on May 30, 2013, 21:40:06 pm εγω εβαλα απλη... ::)
Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: Andreas_T on May 31, 2013, 12:58:21 pm ακυρα τα όσα έλεγα με τις εξτρα εντολές σε κώδικα υπολογισμού πινάκων σε προηγούμενο ποστ ...ο κώδικας υπολογισμού πινάκων απο μόνος ρίχνει αποτέλεσμα στον $α1 (ή όπου έχει αποθηκεύσει κάποιος πίνακα Α) επειδή κανει υπολογισμό Α=Α+Β*C δουλευει μια χαρα ετσι Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 31/05 Post by: anchelon on May 31, 2013, 15:36:29 pm Θα σε βοηθήσω. Στη C++ θα έγραφες π.χ. cout << "a(" << i << "," << j << ")="; πως ακριβώς γίνεται αυτό?γιατί αναγκάστηκα να αποθηκεύσω όλα τα strings :o επίσης μου εμφανίζει μόνο τα strings και δε με αφήνει να δώσω τιμές (βγάζει κάτι σε exception 7) Ξέρει κανείς τι μπορεί να παίζει?Κάνε το ίδιο και δω. Αυτό που θα χρειαστεί είναι να αποθηκεύσεις τα επιμέρους strings στο τμήμα δεδομένων και για τους δείκτες θα χρησιμοποιείς τις τιμές των καταχωρητών αφού τις αυξήσεις κατά 1. ps αν υπάρχει κάποιος που δεν έχει κάτι καλύτερο να κάνει κ προσφέρεται να με βοηθήσει να διορθώσω τον κώδικα μου ,pm me!!ευχαριστώ εκ των προτέρων |