THMMY.gr

Μαθήματα Βασικού Κύκλου => Αρχιτεκτονική Υπολογιστών => Topic started by: Vlassis on May 05, 2015, 23:58:24 pm



Title: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on May 05, 2015, 23:58:24 pm
ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ
ΔΕΥΤΕΡΗ ΕΡΓΑΣΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 
Η εργασία πρέπει να υποβληθεί ηλεκτρονικά στο e-THMMY μέχρι  7 Ιουνίου 2015 (Κυριακή), ώρα 12:00 το μεσημέρι
 
Περιγραφή 
Δημιουργήστε πρόγραμμα σε γλώσσα Assembly του MIPS που να εκτελεί τις ακόλουθες λειτουργίες: 
Να δέχεται από το πληκτρολόγιο Ν πραγματικούς  αριθμούς  και στη συνέχεια να υπολογίζει το άθροισμα των όρων της ακολουθίας
N 
Σαi
i=1
Στην αρχή το πρόγραμμα να τυπώνει το μήνυμα: 
Εισάγετε   το πλήθος των αριθμών : <στο σημείο αυτό ο χρήστης θα εισάγει από το πληκτρολόγιο τον αριθμό Ν>   
 
Στη συνέχεια, και για το πλήθος των αριθμών θα τυπώνει ακολουθιακά τα μηνύματα: 
Δώστε τον αριθμό 1 : <στο σημείο αυτό ο χρήστης θα δίνει το πρώτο, πραγματικό αριθμό της ακολουθίας> 
Δώστε τον αριθμό 2 : <στο σημείο αυτό ο χρήστης θα δίνει το δεύτερο, πραγματικό αριθμό της ακολουθίας> 

. .
Δώστε τον αριθμό Ν :<στο σημείο αυτό ο χρήστης θα δίνει το ν-οστό, πραγματικό αριθμό της ακολουθίας> 
 
Έπειτα το πρόγραμμα θα υπολογίζει το άθροισμα των παραπάνω αριθμών. Στο τέλος του προγράμματος, να εκτυπώνεται το αποτέλεσμα του αθροίσματος με την εμφάνιση αντίστοιχου μηνύματος, πχ 
Άθροισμα αριθμών :<στο σημείο αυτό θα εμφανίζεται το άθροισμα των πραγματικών αριθμών>   
Υποδείξεις
•   Οι πραγματικοί αριθμοί που θα εισάγονται στο πρόγραμμα θα πρέπει να μετατρέπονται σε αριθμούς κινητής υποδιαστολής και οι υπολογισμοί κινητής υποδιαστολής να γίνονται με διπλή ακρίβεια. 
•   Για την εκτέλεση της πρόσθεσης δύο πραγματικών αριθμών να υλοποιήσετέ την ακόλουθη ρουτίνα σε γλώσσα C 
double addition(double a, double b)
{
   double result;   
   result = a + b;
     return result;

•   Για την εκτύπωση των μηνυμάτων εισαγωγής των πραγματικών αριθμών να γίνει επαναλαμβανόμενη χρήση των κατάλληλων syscall.
•   Η προσομοίωση του προγράμματος να γίνει με τη χρήση του Qtspim
 


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: τσαι-borg on May 07, 2015, 10:53:41 am
Έχει αναφερθεί μήπως αν θέλει η αποθήκευση των αριθμών να γίνει στη στοίβα ή όπου θέλουμε?


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Κηπουρίδης on May 07, 2015, 15:42:50 pm
Έχει αναφερθεί μήπως αν θέλει η αποθήκευση των αριθμών να γίνει στη στοίβα ή όπου θέλουμε?

Δεν ξερω πως το ζητανε, προσωπικα φανταζομαι οτι δε θελει να αποθηκευσεις τιποτα στη μνημη. Απλα καθε φορα κρατας το αθροισμα μεχρι εκεινη τη στιγμη.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 07, 2015, 16:48:31 pm
Υποδείξεις
•   Για την εκτέλεση της πρόσθεσης δύο πραγματικών αριθμών να υλοποιήσετέ την ακόλουθη ρουτίνα σε γλώσσα C 
double addition(double a, double b)
{
   double result;   
   result = a + b;
     return result;

Που θα μας χρειαστεί αυτό;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ
Post by: τσαι-borg on May 07, 2015, 18:13:54 pm
Υποδείξεις
•   Για την εκτέλεση της πρόσθεσης δύο πραγματικών αριθμών να υλοποιήσετέ την ακόλουθη ρουτίνα σε γλώσσα C 
double addition(double a, double b)
{
   double result;   
   result = a + b;
     return result;

Που θα μας χρειαστεί αυτό;
Σου χρειάζεται για τον υπολογισμό του αθροίσματος γιατί η add που χρησιμοποιείς κανονικά δεν είναι για fp. Υπάρχουν άλλου είδους καταχωρητές για εκείνη τη δουλειά αλλά στη συγκεκριμένη περίπτωση σου ζητάει να μη χρησιμοποιήσεις εκείνους αλλά να φτιάξεις μια custom ρουτίνα.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 07, 2015, 23:51:52 pm
Σου χρειάζεται για τον υπολογισμό του αθροίσματος γιατί η add που χρησιμοποιείς κανονικά δεν είναι για fp. Υπάρχουν άλλου είδους καταχωρητές για εκείνη τη δουλειά αλλά στη συγκεκριμένη περίπτωση σου ζητάει να μη χρησιμοποιήσεις εκείνους αλλά να φτιάξεις μια custom ρουτίνα.
Υπάρχει η add.d που είναι για πρόσθεση 2 double. Αλλά εγώ εννοώ οτι μπορείς να μετράς το άθροισμα κατευθείαν την στιγμή που τους δίνεις γιατί να βάλουμε ρουτίνα.  Εξάλλου λέει να τους μετατρέπουμε σε αριθμούς κινητής υποδιαστολής , άρα λογικά στους καταχωρητές $f0,$f1 κτλ.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Κηπουρίδης on May 08, 2015, 00:35:04 am
Ισως για να ελεγξει απλα αυτο το κολπακι με την στακ, οταν καλουμε καινουρια ρουτινα.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: τσαι-borg on May 08, 2015, 10:19:49 am
Σου χρειάζεται για τον υπολογισμό του αθροίσματος γιατί η add που χρησιμοποιείς κανονικά δεν είναι για fp. Υπάρχουν άλλου είδους καταχωρητές για εκείνη τη δουλειά αλλά στη συγκεκριμένη περίπτωση σου ζητάει να μη χρησιμοποιήσεις εκείνους αλλά να φτιάξεις μια custom ρουτίνα.
Υπάρχει η add.d που είναι για πρόσθεση 2 double. Αλλά εγώ εννοώ οτι μπορείς να μετράς το άθροισμα κατευθείαν την στιγμή που τους δίνεις γιατί να βάλουμε ρουτίνα.  Εξάλλου λέει να τους μετατρέπουμε σε αριθμούς κινητής υποδιαστολής , άρα λογικά στους καταχωρητές $f0,$f1 κτλ.

Mωρέ εγώ το ξέρω ότι μπορείς να το κάνεις με τους f καταχωρητές αλλά για να ζητάει τη ρουτίνα θέλει να το κάνουμε με τους άλλους? Δεν ξέρω. Στο μάθημα σας είπε για τις εντολές/ καταχωρήτες του coprocessor?


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 08, 2015, 14:02:56 pm
Σου χρειάζεται για τον υπολογισμό του αθροίσματος γιατί η add που χρησιμοποιείς κανονικά δεν είναι για fp. Υπάρχουν άλλου είδους καταχωρητές για εκείνη τη δουλειά αλλά στη συγκεκριμένη περίπτωση σου ζητάει να μη χρησιμοποιήσεις εκείνους αλλά να φτιάξεις μια custom ρουτίνα.
Υπάρχει η add.d που είναι για πρόσθεση 2 double. Αλλά εγώ εννοώ οτι μπορείς να μετράς το άθροισμα κατευθείαν την στιγμή που τους δίνεις γιατί να βάλουμε ρουτίνα.  Εξάλλου λέει να τους μετατρέπουμε σε αριθμούς κινητής υποδιαστολής , άρα λογικά στους καταχωρητές $f0,$f1 κτλ.
Mωρέ εγώ το ξέρω ότι μπορείς να το κάνεις με τους f καταχωρητές αλλά για να ζητάει τη ρουτίνα θέλει να το κάνουμε με τους άλλους? Δεν ξέρω. Στο μάθημα σας είπε για τις εντολές/ καταχωρήτες του coprocessor?
Δεν έχω πάει στην θεωρεία αλλά λογικά γιατί να μην επιτρέπεται;
Αλλιώς χωρίς τους float καταχωρητές πως γίνεται;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: τσαι-borg on May 08, 2015, 16:38:52 pm
με πολύ βλακώδεις διαδικασίες και μάσκες για να χωρίσεις τον εκθέτη και να κάνεις τις σωστές πράξεις. απλώς ρε συ αν ήθελε να βάλουμε τους f γιατί να ζητάει ξεχωριστή ρουτίνα?


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 08, 2015, 19:58:05 pm
Δεν ξέρω. Λογικά θα βάλει διευκρίνιση στις συχνές ερωτήσεις.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: marijuanna on May 16, 2015, 21:05:48 pm
ξερει κανεις γιατι ενω εχω γραψει τον κωδικα και τρεχει μου βγαζει μονιμως αθροισμα μηδεν? νομιζω για καποιο λογο δεν κρατανε τις τιμες τους οι καταχωρητες $f0-$f31...θα μπορουσε να με βοηθησει καποιος?
 :-\


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: τσαι-borg on May 17, 2015, 11:05:40 am
Ποια εντολή χρησιμοποίησες για την αποθήκευση;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ
Post by: marijuanna on May 17, 2015, 21:33:12 pm
οταν διαβαζω float δεν αποθηκευεται στον καταχωρητη $ f0  η τιμη που διαβασα; ε απο κει την περασα σε καποιον αλλο καταχωρητη τον $f6 με τήν εντολη
add.s $f6, $f10, $f0    # στον $f10 ειχα αποθηκευσει το μηδεν τυπου float
μετα εκανα
cvt.d.s $f6, $f4     #για να μετατρεψει τον αριθμο σε διπλης ακριβειας και να τον αποθηκευσει στον $f4

το θεμα ειναι οτι οταν τρεχω το προγραμμα στο qtspim στην καρτελα με τους καταχωρητες του συνεπεξεργαστη δεν παρατηρω καμια μεταβολη στις τιμες τους οπως παρατηρω με τους απλους καταχωρητες του mips και οτι τιμες κι αν δωσω το αθροισμα ειναι παντα 0...σαν να αγνοει τις εντολες του συνεπεξεργαστη...ξερει κανεις τιποτα? καμια βοηθεια...?  :-\


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 17, 2015, 22:40:45 pm
Ναι στον $f0 αποθηκεύεται. Τσέκαρε τα syscall σου μήπως έκανες τίποτα λάθος .
li $v0, 6
syscall (για να διαβάσει float και αποθηκεύει στον $f0)
μετά το cvt.d.s $f6,$f4 αποθηκεύει σαν double στο καταχωρητή $f6 αν δεν κάνω λάθος .
Για να τυπώσεις τον double μεταφέρεις τον αριθμό στον $f12 και
li $v0,3
syscall


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: marijuanna on May 18, 2015, 14:39:10 pm
ειχες οντως δικιο...ευχαριστω...δεν προσεξα καλα την εντολη cvt.d.s
τωρα δεν μου βγαζει 0 αλλα εδωσα 1.3 και 2.4 και μου βγαζει 5...θα τσεκαρω και για αλλα λαθη!!! θενξ εγκεν!!!  :D


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: marijuanna on May 18, 2015, 14:56:15 pm
και μια ακομα ερωτηση...ο mips σαν υποδιαστολη αναγνωριζει το . η το , η και τα δυο?


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 18, 2015, 15:35:40 pm
την . σίγουρα τώρα το , δεν το έχω δοκιμάσει ποτέ.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on May 23, 2015, 00:56:23 am
Τη διαδικασια addition τη γραφουμε κατω απο τη main ετσι ?


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: K on May 23, 2015, 13:07:09 pm
Τη διαδικασια addition τη γραφουμε κατω απο τη main ετσι ?


Ναι.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on May 23, 2015, 17:44:07 pm
Ναι στον $f0 αποθηκεύεται. Τσέκαρε τα syscall σου μήπως έκανες τίποτα λάθος .
li $v0, 6
syscall (για να διαβάσει float και αποθηκεύει στον $f0)
μετά το cvt.d.s $f6,$f4 αποθηκεύει σαν double στο καταχωρητή $f6 αν δεν κάνω λάθος .
γιατι να μην κανεις κατευθειαν
li $v0, 7
syscall
ωστε να διαβασεις κατευθειαν double και το μετατρεπεις ;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 24, 2015, 10:09:08 am
Ναι στον $f0 αποθηκεύεται. Τσέκαρε τα syscall σου μήπως έκανες τίποτα λάθος .
li $v0, 6
syscall (για να διαβάσει float και αποθηκεύει στον $f0)
μετά το cvt.d.s $f6,$f4 αποθηκεύει σαν double στο καταχωρητή $f6 αν δεν κάνω λάθος .
γιατι να μην κανεις κατευθειαν
li $v0, 7
syscall
ωστε να διαβασεις κατευθειαν double και το μετατρεπεις ;
Εγώ τους αποθήκευα στην μνήμη πρώτα οπότε αντί να τους κρατάω σαν double 8 byte για να χρειάζονται λιγότερο χώρο  τους έχω float και μετά στην πρόσθεση τους κάνω double. 


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: K on May 24, 2015, 12:02:59 pm
Ναι στον $f0 αποθηκεύεται. Τσέκαρε τα syscall σου μήπως έκανες τίποτα λάθος .
li $v0, 6
syscall (για να διαβάσει float και αποθηκεύει στον $f0)
μετά το cvt.d.s $f6,$f4 αποθηκεύει σαν double στο καταχωρητή $f6 αν δεν κάνω λάθος .
γιατι να μην κανεις κατευθειαν
li $v0, 7
syscall
ωστε να διαβασεις κατευθειαν double και το μετατρεπεις ;

σου το ζητάει


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on May 24, 2015, 13:49:54 pm
κομπλε τωρα καταλαβα  ;)
Στη διαδικασια ειναι απαραιτητο να γινει αυτο με τον $sp? Που κανει σε παραδειγματα δηλαδη:
addi $sp, $sp, -4
sw $s2, 0($sp)
.
.
lw $s2, 0($sp)
addi $sp, $sp, 4


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 24, 2015, 14:44:26 pm
Εγώ τους αποθηκεύω στην μνήμη (όπως στην 1η εργασία), δεν ξέρω τη κάνει αυτός ο $sp και γενικά τι είναι η στοίβα


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: K on May 24, 2015, 14:49:20 pm
κομπλε τωρα καταλαβα  ;)
Στη διαδικασια ειναι απαραιτητο να γινει αυτο με τον $sp? Που κανει σε παραδειγματα δηλαδη:
addi $sp, $sp, -4
sw $s2, 0($sp)
.
.
lw $s2, 0($sp)
addi $sp, $sp, 4



Άμα το κάνεις θα δεις ότι θα σου λέει address has not been aligned on doubleword boundary. Νομίζω δεν γίνεται να βάλεις double αριθμό σε στοίβα.
Και δεν τη θεωρώ απαραίτητη τη στοίβα.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Escobar on May 24, 2015, 19:45:58 pm
κομπλε τωρα καταλαβα  ;)
Στη διαδικασια ειναι απαραιτητο να γινει αυτο με τον $sp? Που κανει σε παραδειγματα δηλαδη:
addi $sp, $sp, -4
sw $s2, 0($sp)
.
.
lw $s2, 0($sp)
addi $sp, $sp, 4



Άμα το κάνεις θα δεις ότι θα σου λέει address has not been aligned on doubleword boundary. Νομίζω δεν γίνεται να βάλεις double αριθμό σε στοίβα.
Και δεν τη θεωρώ απαραίτητη τη στοίβα.

μπορεις να βαλεις double σε στοιβα, αρκεί να μετακινήσεις τον stack pointer καταλληλα (δηλαδη κατα 8 και οχι κατα 4)


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on May 24, 2015, 20:02:53 pm
κομπλε τωρα καταλαβα  ;)
Στη διαδικασια ειναι απαραιτητο να γινει αυτο με τον $sp? Που κανει σε παραδειγματα δηλαδη:
addi $sp, $sp, -4
sw $s2, 0($sp)
.
.
lw $s2, 0($sp)
addi $sp, $sp, 4



Άμα το κάνεις θα δεις ότι θα σου λέει address has not been aligned on doubleword boundary. Νομίζω δεν γίνεται να βάλεις double αριθμό σε στοίβα.
Και δεν τη θεωρώ απαραίτητη τη στοίβα.
καλως, γιατι την εβαλα αλλα μου φανηκε περιττο.Εκανα την αποθηκευση σε καταχωρητες $f και απο εκει καλουσα την συναρτηση καθε φορα, χωρις στοιβα  :D


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Escobar on May 24, 2015, 21:05:53 pm

καλως, γιατι την εβαλα αλλα μου φανηκε περιττο.Εκανα την αποθηκευση σε καταχωρητες $f και απο εκει καλουσα την συναρτηση καθε φορα, χωρις στοιβα  :D

μα η άσκηση δεν θέλει αυτό. "Έπειτα το πρόγραμμα θα υπολογίζει το άθροισμα των παραπάνω αριθμών". Πρώτα πρέπει να αποθηκευτούν όλες οι τιμές που θα δώσει ο χρήστης και μετά να κάνεις την άθροιση.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: K on May 24, 2015, 21:13:14 pm

καλως, γιατι την εβαλα αλλα μου φανηκε περιττο.Εκανα την αποθηκευση σε καταχωρητες $f και απο εκει καλουσα την συναρτηση καθε φορα, χωρις στοιβα  :D

μα η άσκηση δεν θέλει αυτό. "Έπειτα το πρόγραμμα θα υπολογίζει το άθροισμα των παραπάνω αριθμών". Πρώτα πρέπει να αποθηκευτούν όλες οι τιμές που θα δώσει ο χρήστης και μετά να κάνεις την άθροιση.


Γιατί ποιος σε εμποδίζει την ώρα που διαβάζεις να αθροίζεις κι όλας? Και μπορείς να το εμφανίσεις στο τέλος. Από άποψη μνήμης δε θα ήταν καθόλου αποδοτική η άλλη λύση.
Και βασικά δεν ξέρουμε τι έχει γίνει και στο μάθημα από arrays.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Ancient on May 24, 2015, 21:24:59 pm

καλως, γιατι την εβαλα αλλα μου φανηκε περιττο.Εκανα την αποθηκευση σε καταχωρητες $f και απο εκει καλουσα την συναρτηση καθε φορα, χωρις στοιβα  :D

μα η άσκηση δεν θέλει αυτό. "Έπειτα το πρόγραμμα θα υπολογίζει το άθροισμα των παραπάνω αριθμών". Πρώτα πρέπει να αποθηκευτούν όλες οι τιμές που θα δώσει ο χρήστης και μετά να κάνεις την άθροιση.


Αμ δε...


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on May 24, 2015, 21:43:14 pm
Ευχαριστα τα νεα παιδια :D απαντηση απο Καλογιαννη που λεει:
Quote
Δε σας υποχρεώνει η εκφώνηση να ακολουθήσετε κάποια συγκεκριμένη διαδρομή.
Εκείνο που σας υποχρεώνει είναι να κάνετε την προβλεπόμενη μέθοδο και κλήση αυτής.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Escobar on May 25, 2015, 00:24:55 am

καλως, γιατι την εβαλα αλλα μου φανηκε περιττο.Εκανα την αποθηκευση σε καταχωρητες $f και απο εκει καλουσα την συναρτηση καθε φορα, χωρις στοιβα  :D

μα η άσκηση δεν θέλει αυτό. "Έπειτα το πρόγραμμα θα υπολογίζει το άθροισμα των παραπάνω αριθμών". Πρώτα πρέπει να αποθηκευτούν όλες οι τιμές που θα δώσει ο χρήστης και μετά να κάνεις την άθροιση.


Γιατί ποιος σε εμποδίζει την ώρα που διαβάζεις να αθροίζεις κι όλας? Και μπορείς να το εμφανίσεις στο τέλος. Από άποψη μνήμης δε θα ήταν καθόλου αποδοτική η άλλη λύση.
Και βασικά δεν ξέρουμε τι έχει γίνει και στο μάθημα από arrays.

Τον Καλογιάννη ρώτησα, οπότε σίγουρα πρέπει να το κάνεις έτσι. Βασικά είπε ότι σίγουρα υπάρχει πιο αποδοτική λύση, αλλά θέλει να εξετάσει συγκεκριμένα πράγματα οπότε έτσι πρέπει να γίνει

edit: αν ισχύει όντως η απάντηση που έδωσε πιο πάνω εγώ πάω πάσο


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on May 25, 2015, 19:29:31 pm
κοιτα εγω ρωτησα:
Quote
Θελετε να αποθηκευσουμε πρωτα ολους τους αριθμους καπου και μετα να κανουμε την αθροιση, ή μπορουμε να καλουμε την συναρτηση που αθροιζει καθε φορα που διαβαζουμε εναν αριθμο; Ουσιαστικα το αποτελεσμα στο τελος δεν ειναι αυτο που μετραει μονο ;
και η απαντηση ηταν αυτη που εδωσα παραπανω! αλλαξε γνωμη who knows  :P


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: NaVi.Mitsos on May 25, 2015, 22:10:41 pm
Τελικά παιδιά διαβάζουμε σαν float και κάνουμε convert σε double?Αν ναι το convert που γίνεται ,στην αddition  πριν το αθροισμα;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Escobar on May 25, 2015, 22:16:47 pm
Τελικά παιδιά διαβάζουμε σαν float και κάνουμε convert σε double?Αν ναι το convert που γίνεται ,στην αddition  πριν το αθροισμα;

εγώ τα έκανα αμέσως μετά την αποθήκευση ως float!


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: NaVi.Mitsos on May 25, 2015, 22:24:25 pm
με αυτο εξοικονομείται χόρος κάπως αν το κάνουμε κατευθειαν ποια η διαφορα ;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on May 26, 2015, 22:08:08 pm
υπαρχει κατι αντιστοιχο του $zero σε double ? και γενικα πως μπορουμε να χρησιμοποιησουμε το μηδεν σε πραξεις με float/double..? 


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: τσαι-borg on May 26, 2015, 22:27:43 pm
μπορείς να το φέρεις σε μορφοποίηση double, νομίζω πως δεν υπάρχει έτοιμο.

mtc1 $zero, $f0
cvt.d.w $f0,$f0


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: K on May 27, 2015, 12:12:24 pm
υπαρχει κατι αντιστοιχο του $zero σε double ? και γενικα πως μπορουμε να χρησιμοποιησουμε το μηδεν σε πραξεις με float/double..? 

πάνω στο .data φτιαχνεις μια ετικέτα, τύπος δεδομένου float/double, τιμή 0.0
και μετά στο πρόγραμμα το φορτώνεις σε κατάλληλο καταχωρητή.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on May 28, 2015, 14:11:39 pm
για αυτη την ρουτινα που ζηταει ,θελει ουσιαστικα να καλουμε και συναρτηση; αν ναι δεν θα ειναι λιγο βλακωδες και οτι να'ναι;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: τσαι-borg on May 28, 2015, 15:00:58 pm
ενώ το να τα αποθηκεύεις στη μνήμη ή το να τα κάνεις πρώτα απλής και μετά διπλής δεν είναι;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: K on May 28, 2015, 17:22:25 pm
ενώ το να τα αποθηκεύεις στη μνήμη ή το να τα κάνεις πρώτα απλής και μετά διπλής δεν είναι;

για αυτη την ρουτινα που ζηταει ,θελει ουσιαστικα να καλουμε και συναρτηση; αν ναι δεν θα ειναι λιγο βλακωδες και οτι να'ναι;


Εντάξει δεν έχει κάποια πρακτική αξία σαν πρόγραμμα απλώς θέλει να δει ότι μπορείς να το κάνεις κι αυτό.
Πιθανόν να έχει διδαχθεί κάτι σχετικό.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on May 29, 2015, 20:54:25 pm
τελικα η διαδικασια addition θα γινει με διαχωρισμο των double αριθμων σε integers(χρησιμοποιώντας μασκες), ωστε να μπορουμε να τους στειλουμε και να τους λαβουμε στη συναρτηση,αναπτυσωντας ταυτοχρονα 5-6 ειδη καρκινου ή γινεται και καπως αλλιως;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: kaspas on May 29, 2015, 21:19:32 pm
τελικα η διαδικασια addition θα γινει με διαχωρισμο των double αριθμων σε integers(χρησιμοποιώντας μασκες), ωστε να μπορουμε να τους στειλουμε και να τους λαβουμε στη συναρτηση,αναπτυσωντας ταυτοχρονα 5-6 ειδη καρκινου ή γινεται και καπως αλλιως;
Δεν ξέρω αν θέλει μάσκες, αλλά για την addition μπορείς να βάλεις ορίσματα σαν double. Οι καταχωτητές f12 και f14 είναι ορίσματα και επιστρεφόμενη τιμή πχ στον f0.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on May 30, 2015, 12:59:43 pm
τελικα η διαδικασια addition θα γινει με διαχωρισμο των double αριθμων σε integers(χρησιμοποιώντας μασκες), ωστε να μπορουμε να τους στειλουμε και να τους λαβουμε στη συναρτηση,αναπτυσωντας ταυτοχρονα 5-6 ειδη καρκινου ή γινεται και καπως αλλιως;
Δεν ξέρω αν θέλει μάσκες, αλλά για την addition μπορείς να βάλεις ορίσματα σαν double. Οι καταχωτητές f12 και f14 είναι ορίσματα και επιστρεφόμενη τιμή πχ στον f0.
ευχαριστω ,ετσι δουλεψε


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on May 31, 2015, 20:37:52 pm
Τα ορίσματα πως τα μεταβιβάζω στη συνάρτηση;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on May 31, 2015, 21:13:20 pm
Τα ορίσματα πως τα μεταβιβάζω στη συνάρτηση;
απλα περνας απο πριν τις τιμες στους καταχωρητες που θα χρησιμοποιησεις κατα την κληση της και επειτα γραφεις: jal addition, οπου addition ειναι η ζητουμενη διαδικασια


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on May 31, 2015, 21:17:48 pm
Τα ορίσματα πως τα μεταβιβάζω στη συνάρτηση;
απλα περνας απο πριν τις τιμες στους καταχωρητες που θα χρησιμοποιησεις κατα την κληση της και επειτα γραφεις: jal addition, οπου addition ειναι η ζητουμενη διαδικασια
Σ' ευχαριστώ πολύ! Και κάτι ακόμη... Διαβάζω έναν αριθμό και μετά θέλω να τον μετατρέψω σε κινητής υποδιαστολής διπλής ακρίβειας με την ακόλουθη εντολή: cvt.d.s $f0,$v0 και μου βγάζει error. Τι πάει στραβά;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: τσαι-borg on May 31, 2015, 21:18:48 pm
Xρησιμοποιείς καταχωρήτη που δεν δέχεται η εντολή. (ακα v0) πρέπει να είναι και οι 2 f.
αν θες να τον διαβασεις ως ακέραιο και να τον κάνεις double fp η εντολή είναι cvt.d.w


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on May 31, 2015, 21:26:56 pm
Λοιπόν. Για να διαβάσω έναν όρο χρησιμοποιώ την εντολή
 ori $v0, 5
 syscall
Τώρα το $v0 πως το κάνω σε διπλής ακρίβειας;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on May 31, 2015, 21:28:48 pm
εφοσον ομως ζηταει να διαβαζεις πραγματικους το αποτελεσμα αποθηκευεται απευθειας στον $f0 οποτε απο εκει δεν θα εχεις θεμα,δεν πρεπει να χρησιμοποιησεις τον $v0


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on May 31, 2015, 21:33:55 pm
Υπάρχει και κάποιος τρόπος να έχω έναν καταχωρητή διπλής ακρίβειας που να έχει την τιμή 0;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on May 31, 2015, 21:34:55 pm
Υπάρχει και κάποιος τρόπος να έχω έναν καταχωρητή διπλής ακρίβειας που να έχει την τιμή 0;
το λεει στην προηγουμενη σελιδα με 2 τροπους ...τσεκαρε


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on May 31, 2015, 22:09:04 pm
ωχ ναι... Δεν το είχα δει. Για την εκτύπωση όμως δεν λειτουργεί αυτό με την ori γιατί δεν μπορώ να εισάγω διπλής ακρίβειας σε στοίβα. Πως εκτυπώνεται;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on May 31, 2015, 22:15:11 pm
ωχ ναι... Δεν το είχα δει. Για την εκτύπωση όμως δεν λειτουργεί αυτό με την ori γιατί δεν μπορώ να εισάγω διπλής ακρίβειας σε στοίβα. Πως εκτυπώνεται;
κοιτα για στοιβα δεν ξερω γιατι εγω το εκανα χωρις,απο οτι μου εχουν πει εχει καποια κολληματα γιατι θελει να την μετακινεις κατα 8 αντι 4 στους double.γενικα εγω και για διαβασμα και για εκτυπωση χρησιμοποιω την ψευδοεντολη li και οχι την ori και δουλευει


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on May 31, 2015, 22:20:34 pm
ωχ ναι... Δεν το είχα δει. Για την εκτύπωση όμως δεν λειτουργεί αυτό με την ori γιατί δεν μπορώ να εισάγω διπλής ακρίβειας σε στοίβα. Πως εκτυπώνεται;
κοιτα για στοιβα δεν ξερω γιατι εγω το εκανα χωρις,απο οτι μου εχουν πει εχει καποια κολληματα γιατι θελει να την μετακινεις κατα 8 αντι 4 στους double.γενικα εγω και για διαβασμα και για εκτυπωση χρησιμοποιω την ψευδοεντολη li και οχι την ori και δουλευει
Βάζοντας δίπλα στο $f12 το όνομα του καταχωρητή που θα είναι αποθηκευμένο το άθροισμα;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on May 31, 2015, 22:25:32 pm
ωχ ναι... Δεν το είχα δει. Για την εκτύπωση όμως δεν λειτουργεί αυτό με την ori γιατί δεν μπορώ να εισάγω διπλής ακρίβειας σε στοίβα. Πως εκτυπώνεται;
κοιτα για στοιβα δεν ξερω γιατι εγω το εκανα χωρις,απο οτι μου εχουν πει εχει καποια κολληματα γιατι θελει να την μετακινεις κατα 8 αντι 4 στους double.γενικα εγω και για διαβασμα και για εκτυπωση χρησιμοποιω την ψευδοεντολη li και οχι την ori και δουλευει
Βάζοντας δίπλα στο $f12 το όνομα του καταχωρητή που θα είναι αποθηκευμένο το άθροισμα;
καπως ετσι συντασεται
li $v0,3    
add.d $f12,$f4,$f0
syscall
(o $f4 ειναι ο 0.0 και ο $f0 εχει το αθροισμα)
googlare το κιολας λιγο
   


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on June 01, 2015, 14:09:52 pm
Για τη συνάρτηση ουσιαστικά αφού έχω έστω στον καταχωρητή $f1 τον ι-στο όρο της ακολουθίας και στον $f2 το άθροισμα,καλώ τη συνάρτηση με μια εντολή jal και εκεί κάνω την πρόσθεση; Δεν θέλει να ασχοληθώ με a0,v0 κλπ;                                                                                                                                                                                                                                                                                             


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Ancient on June 01, 2015, 14:17:10 pm
Όχι. Όταν έχεις αριθμούς κινητής υποδιαστολής τύπου double χρησιμοποιείς τους $f12 και $f14 ως ορίσματα και τον $f0 ως επιστρεφόμενη τιμή. Μην αποθηκεύσεις κατευθείαν το αποτέλεσμα στο sum γιατί η συνάρτηση δε μεταβάλει μεταβλητές. Κάνει υπολογισμούς και επιστρέφει μια τιμή.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: K on June 01, 2015, 14:21:22 pm
. Όταν έχεις αριθμούς κινητής υποδιαστολής τύπου double χρησιμοποιείς τους $f12 και $f14 ως ορίσματα

Απο πού το ξέρουμε αυτό?


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on June 01, 2015, 14:26:22 pm
. Όταν έχεις αριθμούς κινητής υποδιαστολής τύπου double χρησιμοποιείς τους $f12 και $f14 ως ορίσματα

Απο πού το ξέρουμε αυτό?
http://howardhuang.us/teaching/cs232/10-MIPS-floating-point-arithmetic.pdf (http://howardhuang.us/teaching/cs232/10-MIPS-floating-point-arithmetic.pdf)
τσεκαρε εδω, σελ .24 κυρίως


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Πρ
Post by: K on June 01, 2015, 14:30:53 pm
. Όταν έχεις αριθμούς κινητής υποδιαστολής τύπου double χρησιμοποιείς τους $f12 και $f14 ως ορίσματα

Απο πού το ξέρουμε αυτό?
http://howardhuang.us/teaching/cs232/10-MIPS-floating-point-arithmetic.pdf (http://howardhuang.us/teaching/cs232/10-MIPS-floating-point-arithmetic.pdf)
τσεκαρε εδω, σελ .24 κυρίως

thank you Vlassis! Αυτά έχουν διδαχθεί στο μάθημα?

edit: λέει ότι είναι έτσι το convention, η δουλειά μας όμως γενικά γίνεται.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on June 01, 2015, 14:33:48 pm
. Όταν έχεις αριθμούς κινητής υποδιαστολής τύπου double χρησιμοποιείς τους $f12 και $f14 ως ορίσματα

Απο πού το ξέρουμε αυτό?
http://howardhuang.us/teaching/cs232/10-MIPS-floating-point-arithmetic.pdf (http://howardhuang.us/teaching/cs232/10-MIPS-floating-point-arithmetic.pdf)
τσεκαρε εδω, σελ .24 κυρίως

thank you Vlassis! Αυτά έχουν διδαχθεί στο μάθημα?
you're welcome  :P
ελα μου ντε δε ξερω αμα τα ειχε πει ο Χασαπης στα μαθηματα του! στις διαφανειες νομιζω δεν υπαρχουν ομως γιαυτο και αμφιβαλλω αμα εχουν διδαχθει..


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on June 01, 2015, 16:09:56 pm
Όχι. Όταν έχεις αριθμούς κινητής υποδιαστολής τύπου double χρησιμοποιείς τους $f12 και $f14 ως ορίσματα και τον $f0 ως επιστρεφόμενη τιμή. Μην αποθηκεύσεις κατευθείαν το αποτέλεσμα στο sum γιατί η συνάρτηση δε μεταβάλει μεταβλητές. Κάνει υπολογισμούς και επιστρέφει μια τιμή.
Ευχαριστώ πολύ  :) Το πρόβλημά μου απ 'ό,τι φαίνεται είναι ότι δεν καλώ σωστά τη συνάρτηση. Έχει βρει κάποιος ολοκληρωμένο παράδειγμα σε assembly που να καλεί συνάρτηση;; Έχω googlάρει κ το μόνο που έχω βρει είναι πώς γράφεται απλά μια συνάρτηση σε assembly,ενώ εμένα με ενδιαφέρει ο τρόπος κλήσης της.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on June 01, 2015, 16:24:57 pm
Όχι. Όταν έχεις αριθμούς κινητής υποδιαστολής τύπου double χρησιμοποιείς τους $f12 και $f14 ως ορίσματα και τον $f0 ως επιστρεφόμενη τιμή. Μην αποθηκεύσεις κατευθείαν το αποτέλεσμα στο sum γιατί η συνάρτηση δε μεταβάλει μεταβλητές. Κάνει υπολογισμούς και επιστρέφει μια τιμή.
Ευχαριστώ πολύ  :) Το πρόβλημά μου απ 'ό,τι φαίνεται είναι ότι δεν καλώ σωστά τη συνάρτηση. Έχει βρει κάποιος ολοκληρωμένο παράδειγμα σε assembly που να καλεί συνάρτηση;; Έχω googlάρει κ το μόνο που έχω βρει είναι πώς γράφεται απλά μια συνάρτηση σε assembly,ενώ εμένα με ενδιαφέρει ο τρόπος κλήσης της.
παραδειγμα δεν εχω βρει ειναι η αληθεια  :P
αλλα ουσιαστικα
  • περνας στους καταχωρητες που αναφερθηκαν πιο πανω τα ορισματα,πχ με add (add.d $f12, $f2, $f4 κλπ)
  • jal Addition
  • μεταφερεις το αποτελεσμα που ειναι αποθηκευμενο στον $f0 σε εναν καταχωρητη που εσυ θες παλι με την ιδια διαδικασια add.d $ , $ , $
και ετοιμη η κληση  ;)


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on June 01, 2015, 16:50:27 pm
Όχι. Όταν έχεις αριθμούς κινητής υποδιαστολής τύπου double χρησιμοποιείς τους $f12 και $f14 ως ορίσματα και τον $f0 ως επιστρεφόμενη τιμή. Μην αποθηκεύσεις κατευθείαν το αποτέλεσμα στο sum γιατί η συνάρτηση δε μεταβάλει μεταβλητές. Κάνει υπολογισμούς και επιστρέφει μια τιμή.
Ευχαριστώ πολύ  :) Το πρόβλημά μου απ 'ό,τι φαίνεται είναι ότι δεν καλώ σωστά τη συνάρτηση. Έχει βρει κάποιος ολοκληρωμένο παράδειγμα σε assembly που να καλεί συνάρτηση;; Έχω googlάρει κ το μόνο που έχω βρει είναι πώς γράφεται απλά μια συνάρτηση σε assembly,ενώ εμένα με ενδιαφέρει ο τρόπος κλήσης της.
παραδειγμα δεν εχω βρει ειναι η αληθεια  :P
αλλα ουσιαστικα
  • περνας στους καταχωρητες που αναφερθηκαν πιο πανω τα ορισματα,πχ με add (add.d $f12, $f2, $f4 κλπ)
  • jal Addition
  • μεταφερεις το αποτελεσμα που ειναι αποθηκευμενο στον $f0 σε εναν καταχωρητη που εσυ θες παλι με την ιδια διαδικασια add.d $ , $ , $
και ετοιμη η κληση  ;)
Στο τέλος της συνάρτησης γράφω απλά jr $ra για να επιστρέψει στο σημείο απ'το οποίο κλήθηκε; Χρησιμοποίησες και sp στη συνάρτηση;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on June 01, 2015, 17:16:09 pm
ναι μονο jr $ra και εκτελειται η επομενη εντολη, δλδ η  PC+4. Οχι την εκανα χωρις $sp .Δεν κρατησα τις τιμες ολες μαζι πουθενα, οποτε δεν χρειαστηκε sp  :)


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on June 01, 2015, 17:32:54 pm
ναι μονο jr $ra και εκτελειται η επομενη εντολη, δλδ η  PC+4. Οχι την εκανα χωρις $sp .Δεν κρατησα τις τιμες ολες μαζι πουθενα, οποτε δεν χρειαστηκε sp  :)
Ουσιαστικά γράφεις
addition:
add.d $f0,$f10,$f12
jr $ra

???


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on June 01, 2015, 17:35:11 pm
ναι μονο jr $ra και εκτελειται η επομενη εντολη, δλδ η  PC+4. Οχι την εκανα χωρις $sp .Δεν κρατησα τις τιμες ολες μαζι πουθενα, οποτε δεν χρειαστηκε sp  :)
Ουσιαστικά γράφεις
addition:
add.d $f0,$f12,$f14
jr $ra


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on June 01, 2015, 18:06:15 pm
ναι μονο jr $ra και εκτελειται η επομενη εντολη, δλδ η  PC+4. Οχι την εκανα χωρις $sp .Δεν κρατησα τις τιμες ολες μαζι πουθενα, οποτε δεν χρειαστηκε sp  :)
Ουσιαστικά γράφεις
addition:
add.d $f0,$f12,$f14
jr $ra
Ναι ,σωστά  :D Και κάτι τελευταίο...Πρώτον γιατί όταν προσθέτω δεκαδικούς αριθμούς που έχουν άθροισμα 5.8 μου εμφανίζει 5.7999 και δεύτερον καμιά ιδέα για να μη μου εμφανίζει στο τέλος της εκτέλεσης του προγράμματος το πάραθυρο που λέει attempt to execute non instruction at 0x004000e4???


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on June 01, 2015, 18:09:49 pm
ναι μονο jr $ra και εκτελειται η επομενη εντολη, δλδ η  PC+4. Οχι την εκανα χωρις $sp .Δεν κρατησα τις τιμες ολες μαζι πουθενα, οποτε δεν χρειαστηκε sp  :)
Ουσιαστικά γράφεις
addition:
add.d $f0,$f12,$f14
jr $ra
Ναι ,σωστά  :D Και κάτι τελευταίο...Πρώτον γιατί όταν προσθέτω δεκαδικούς αριθμούς που έχουν άθροισμα 5.8 μου εμφανίζει 5.7999 και δεύτερον καμιά ιδέα για να μη μου εμφανίζει στο τέλος της εκτέλεσης του προγράμματος το πάραθυρο που λέει attempt to execute non instruction at 0x004000e4???
για το πρωτο δεν ξερω, και γω πχ αν εχω αθροισμα 6.2 μπορει να μου βγαλει 6.2000563  :???:
για το δευτερο βαλε στο τελος ενα syscall για exit απο το προγραμμα και νομιζω θα φυγει  ;)


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Mr K on June 02, 2015, 13:52:36 pm
Παιδες διαβάζουμε int τους οποιους μετατρεπουμε σε float και μετα double

ή

κατευθείαν float και μετα double?

Γιατι στην εκφώνηση λέει οι πραγματικοι αριθμοι που εισαγονται στο προγραμμα να μετατρέπονται σε κινητης υποδιαστολής και μετα σε διπλης ακρίβειας


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Vlassis on June 02, 2015, 17:26:26 pm
Παιδες διαβάζουμε int τους οποιους μετατρεπουμε σε float και μετα double

ή

κατευθείαν float και μετα double?

Γιατι στην εκφώνηση λέει οι πραγματικοι αριθμοι που εισαγονται στο προγραμμα να μετατρέπονται σε κινητης υποδιαστολής και μετα σε διπλης ακρίβειας

νομιζω το δευτερο..Γιατι ποιο θα ηταν το νοημα να διαβαζουμε int και να χρησιμοποιουμε float και double ??


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Mr K on June 03, 2015, 12:49:24 pm
νομιζω το δευτερο..Γιατι ποιο θα ηταν το νοημα να διαβαζουμε int και να χρησιμοποιουμε float και double ??

Thx και εγω έτσι το έκανα  :) Πάντως δεν νομιζω να κολλάει ο Καλογιάννης σε τέτοιες λεπτομέρειες ετσι και αλλιώς


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: Mr K on June 03, 2015, 12:52:21 pm
για το πρωτο δεν ξερω, και γω πχ αν εχω αθροισμα 6.2 μπορει να μου βγαλει 6.2000563  :???:

Είναι επειδή οι υπολογιστές δεν είναι τέλειοι, αν ξανατρέξεις τα ίδια νουμερα, μπορεί να σου βγάλει το σωστό π.χ. 6.2. Γενικά το αγνοείς (ειναι αστοχία υπολογισμών)


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on June 06, 2015, 17:57:07 pm
Παιδιά καμιά ιδέα για να μην εμφανίζεται στο τέλος της εκτέλεσης του προγράμματος το πάραθυρο που λέει attempt to execute non instruction at 0x004000e4???


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: geopas on June 06, 2015, 18:00:23 pm
Παιδιά καμιά ιδέα για να μην εμφανίζεται στο τέλος της εκτέλεσης του προγράμματος το πάραθυρο που λέει attempt to execute non instruction at 0x004000e4???
γραψε στο τελος του προγραμματος σου

li $v0,10                           
syscall

 για να τερματισει το προγραμμα σου


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: τσαι-borg on June 06, 2015, 18:35:15 pm
To πρόβλημα υπάρχει γιατί χρησιμοποιείται το jal για την κλήση της addition. Αν πχ συνήθως χρησιμοποιείς το jr $ra όταν θέλεις να τελειώσεις το πρόγραμμα σου, έχοντας ζητήσει να κάνει jal στη διεύθυνση της addition έχεις μεταφέρει αλλού τον $ra. Για να το λύσεις αυτό μπορείς να κάνεις δύο πράγματα, ή να χρησιμοποιήσεις για έξοδο το syscall με κωδικό 10 όπως λέει ο geopas ή να αποθηκεύσεις στη στοίβα (ή όπου θες) την τιμή της διεύθυνσης που θες να επιστρέψεις πριν κάνεις οποιαδήποτε αλλαγή στον $ra. Ένα καλό παράδειγμα για να καταλάβεις πως δουλεύει αυτό είναι οι αναδρομικές διαδικασίες. Έχει στο βιβλίο κάπου τον υπολογισμό παραγοντικού που έχω την εντύπωση ότι χρησιμοποιεί τη δεύτερη μέθοδο. Δεν έχω μπροστά μου το βιβλίο για να σου πω ακριβή σελίδα όμως.
Ομολογουμένως το error που αναφέρεται δεν είμαι σίγουρη γιατί προκύπτει γιατί δεν ξέρω με ποια εντολή δηλώνετε τη λήξη των προγραμμάτων σας. Γενικά όμως ισχύει το παραπάνω.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Δεύτερη Εργασία - Προθεσμία 7/06
Post by: mrboombastic on June 06, 2015, 19:44:06 pm
Σας ευχαριστώ πολύ!! Το έκανα με τον πρώτο τρόπο και δούλεψε  ;)