THMMY.gr

Μαθήματα Βασικού Κύκλου => Αρχιτεκτονική Υπολογιστών => Topic started by: George_RT on April 01, 2015, 22:09:38 pm



Title: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: George_RT on April 01, 2015, 22:09:38 pm
Περιγραφή

Δημιουργήστε πρόγραμμα σε γλώσσα Assembly του MIPS που να εκτελεί τις ακόλουθες λειτουργίες:

Να δέχεται από το πληκτρολόγιο, την κατάσταση (state) τριών διακοπτών (Διακόπτης 1, Διακόπτης 2, Διακόπτης 3) με την εμφάνιση ανάλογων μηνυμάτων.
Μετά την εισαγωγή της κατάστασης κάθε διακόπτη να τυπώνε ιτην υπάρχουσα κατάσταση του αντίστοιχου διακόπτη,για παράδειγμα

Παρακαλώ εισάγεται την κατάσταση των τριών διακοπτών

Διακόπτης1:<οχρήστης πρέπει να μπορεί να εισάγει τη τιμή  0 ή 1> 0

Διακόπτης1,κατάσταση:0

Διακόπτης2:<ο χρήστης πρέπει να μπορεί να εισάγει τη τιμή 0 ή 1>1

Διακόπτης2 κατάσταση:1

Διακόπτης3:<ο χρήστης πρέπει να μπορεί να εισάγει τη τιμή 0 ή 1>0

Διακόπτης3,κατάσταση:0

Μετά την εισαγωγή και εκτύπωση των καταστάσεων των διακοπτών το πρόγραμμα να ζητά από τον χρήστη με την βοήθεια κατάλληλου μενού, την επιλογή για εκτέλεση μιας λογική ςπράξης ανάμεσα στις καταστάσεις των διακοπτών.Οι πράξεις που θα πρέπει να υποστηρίζονται είναι

•ΛογικόAND

•ΛογικόOR

•ΛογικόEXOR

Στο τέλος το πρόγραμμα νατ υπώνει το αποτέλεσμα της εκτελεσθείσας πράξης.

Θεωρείστε ότι η κατάσταση κάθε διακόπτη καταγράφεται στο λιγότερο σημαντικό ψηφίο ενός καταχωρητή στη μνήμη των στατικών δεδομένων που αρχίζει από τη διεύθυνση 0x10000000.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Vlassis on April 07, 2015, 20:54:45 pm
Quote
   
Διευκρίνιση στην 1ή Εργασία - Αρχιτεκτονική Υπολογιστών
7 Απρ 2015 4:02 μμ
Καλογιάννης

Αγαπητοί σπουδαστές,

σχετικά με την 1ή εργασία στην αρχιτεκτονική υπολογιστών μια διευκρίνιση:
Για την αποθήκευση των τιμών των διακοπτών, κάντε χρήση ενός καταχωρητή και χρήση μάσκας και όχι τριών.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: kaspas on April 14, 2015, 14:46:27 pm
Τι είναι η μάσκα ρε παιδιά ;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Nerevar on April 14, 2015, 14:58:28 pm
Τι είναι η μάσκα ρε παιδιά ;

(http://i01.i.aliimg.com/wsphoto/v1/549836883_2/Batman-Mask-Funny-The-Halloween-s-Batman-Figure-Plastic-Mask-with-Elastic-Band-for-All-Saints.jpg)

On a more serious note,click me. (http://en.wikipedia.org/wiki/Mask_%28computing%29)


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Mr K on April 16, 2015, 17:33:39 pm
Αυτο με την μασκα και τις τρεις τιμές το έχει λύσει κανένας;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Vlassis on April 18, 2015, 14:49:17 pm
Παιζει να εχει κανεις την λυση της περσινης εργασιας; Να παρουμε μια ιδεα στο περιπου πως γινεται..  :???:


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Escobar on April 18, 2015, 15:30:41 pm
Αυτο με την μασκα και τις τρεις τιμές το έχει λύσει κανένας;

στην ουσία σου λέει στον ίδιο καταχωρητή, δηλαδή σε 4 byte να αποθηκεύσεις και τις τρεις τιμές. Πχ: αν οι τιμές των διακοπτών ειναι 1,1 ,0 μπορείς να τις αποθηκεύσεις ως ....0000011 με λογικό or. Όταν τις χρειαστείς θα χρησιμοποιήσεις την αντίστοιχη μάσκα. Πχ για να πάρω την τιμή του 2ου καταχωρητή, χρησιμοποιώ το ...000010  (=2) και το λογικό and


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Vlassis on April 18, 2015, 21:29:22 pm
Απ΄οτι καταλαβα απο δοκιμες και απο τα σχολια για την περσινη εργασια, τις τιμες των διακοπτων τις αποθηκευουμε στον $gp.
Γιατι εκει, και οχι σε καποιον αλλον καταχωρητη, π.χ. τον $s0 ?


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: mrboombastic on April 26, 2015, 14:41:12 pm
Παιδιά έχω το εξής θέμα... Όταν τρέχω το πρόγραμμα μόλις τελειώνει η εκτέλεσή του, εμφανίζεται ένα παράθυρο που λέει error: attempt to execute non-instruction at 0x00400184.(Δεν ξέρω αν παίζει ρόλο αλλά ο PC δείχνει στην τιμή 400184). Έχει κανείς καμιά ιδέα για το τί μπορεί να φταίει;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Escobar on April 26, 2015, 15:31:17 pm
Παιδιά έχω το εξής θέμα... Όταν τρέχω το πρόγραμμα μόλις τελειώνει η εκτέλεσή του, εμφανίζεται ένα παράθυρο που λέει error: attempt to execute non-instruction at 0x00400184.(Δεν ξέρω αν παίζει ρόλο αλλά ο PC δείχνει στην τιμή 400184). Έχει κανείς καμιά ιδέα για το τί μπορεί να φταίει;

μάλλον δεν έχεις συντάξει κάποια εντολή σωστά,το ξανακοίταξες?


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: mrboombastic on April 26, 2015, 15:51:03 pm
Παιδιά έχω το εξής θέμα... Όταν τρέχω το πρόγραμμα μόλις τελειώνει η εκτέλεσή του, εμφανίζεται ένα παράθυρο που λέει error: attempt to execute non-instruction at 0x00400184.(Δεν ξέρω αν παίζει ρόλο αλλά ο PC δείχνει στην τιμή 400184). Έχει κανείς καμιά ιδέα για το τί μπορεί να φταίει;

μάλλον δεν έχεις συντάξει κάποια εντολή σωστά,το ξανακοίταξες?
Απλά τρέχει κανονικά. Δηλάδη είσαγω τιμές, μου εκτυπώνει τα αντίστοιχα μηνύματα,όλα κομπλέ αλλά μόλις τελειώνει το προγραμμα μου εμφανίζει αυτό.Μήπως παίζει ρόλο το γεγονός ότι χρησιμοποιώ sp και θα πρέπει στο τέλος να κάνω κάτι σαν "αποδέσμευση";


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Vlassis on April 26, 2015, 18:24:15 pm
Παιδιά έχω το εξής θέμα... Όταν τρέχω το πρόγραμμα μόλις τελειώνει η εκτέλεσή του, εμφανίζεται ένα παράθυρο που λέει error: attempt to execute non-instruction at 0x00400184.(Δεν ξέρω αν παίζει ρόλο αλλά ο PC δείχνει στην τιμή 400184). Έχει κανείς καμιά ιδέα για το τί μπορεί να φταίει;

μάλλον δεν έχεις συντάξει κάποια εντολή σωστά,το ξανακοίταξες?
Απλά τρέχει κανονικά. Δηλάδη είσαγω τιμές, μου εκτυπώνει τα αντίστοιχα μηνύματα,όλα κομπλέ αλλά μόλις τελειώνει το προγραμμα μου εμφανίζει αυτό.Μήπως παίζει ρόλο το γεγονός ότι χρησιμοποιώ sp και θα πρέπει στο τέλος να κάνω κάτι σαν "αποδέσμευση";
αν θυμαμαι καλα στα παραδειγματα που εχει, αν εχεις κανει στην αρχη του προγραμματος κατι του στυλ "add $sp,$sp,-12 " πρεπει και στο τελος να κανεις την αντιθετη πραξη ακριβως..
η δοκιμασε στο τελος να βαλεις την εντολη "jr $ra" αν δεν την εχεις ηδη ..


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Mr K on April 26, 2015, 18:29:30 pm
Μπορει κάποιος να γραψει την εντολη χρησιμοποιησης της μασκας; πχ εχω το 011 αποθηκευμενο στον  $t0. Μετα θελω πχ να παρω το 010 οποτε βάζω μια and.  Μετα δεν μπορω να βρω τι ακριβως γράφω  :-\

πχ
and $t1, $t0, 010  ;



Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Vlassis on April 26, 2015, 18:34:27 pm
Μπορει κάποιος να γραψει την εντολη χρησιμοποιησης της μασκας; πχ εχω το 011 αποθηκευμενο στον  $t0. Μετα θελω πχ να παρω το 010 οποτε βάζω μια and.  Μετα δεν μπορω να βρω τι ακριβως γράφω  :-\

πχ
and $t1, $t0, 010  ;


andi $t2, $t2, 0x10
ετσι το χω γραψει εγω.. η αποθηκευση των τιμων που λεει να γινει σε εναν καταχωρητη, πρεπει σε καποιον συγκεκριμενο ή δεν παιζει ρολο ;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Mr K on April 26, 2015, 18:46:19 pm
Δεν παιζει ρολο.

Kαλο δεν ειναι η πληροφορια που τραβας να μην αποθηκευεται παλι στον ιδιο καταχωρητη αλλιως θα χαθει η αρχικη κατασταση των διακοπτων;
πχ γραψε andi $t1, $t2, 0x10 (αν και ακομα δεν μου τρεχει ρε  >:( >:( )


Και κατι ακομα :) την διευθυνση 0x10000000 την βάζεις διπλα στο data segment και τέλος;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Vlassis on April 26, 2015, 18:52:38 pm
Εχεις δικιο σ αυτο ναι, απλα το εκανα καπως αλλιως..αποθηκευσα τις τιμες των διακοπτων σχετικα στον $gp και καθε φορα εκανα:
lw $t1, 0($gp)   
andi $t1, $t1, 0x1

και μετα 4($gp) και $t2 για τον 2ο διακοπτη κλπ..


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Mr K on April 26, 2015, 19:07:42 pm
Εχεις δικιο σ αυτο ναι, απλα το εκανα καπως αλλιως..αποθηκευσα τις τιμες των διακοπτων σχετικα στον $gp και καθε φορα εκανα:
lw $t1, 0($gp)   
andi $t1, $t1, 0x1

και μετα 4($gp) και $t2 για τον 2ο διακοπτη κλπ..

Δεν ξερω αν ειναι σωστο γιατι λεει να τα αποθηκευουμε στο 0x10000000 και οχι στο $gp που ειναι στο  0x10008000. Αυτο το σημειο βασικα δεν το εχω καταλάβει


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: kaspas on April 26, 2015, 19:47:37 pm
Εχεις δικιο σ αυτο ναι, απλα το εκανα καπως αλλιως..αποθηκευσα τις τιμες των διακοπτων σχετικα στον $gp και καθε φορα εκανα:
lw $t1, 0($gp)   
andi $t1, $t1, 0x1

και μετα 4($gp) και $t2 για τον 2ο διακοπτη κλπ..

Δεν ξερω αν ειναι σωστο γιατι λεει να τα αποθηκευουμε στο 0x10000000 και οχι στο $gp που ειναι στο  0x10008000. Αυτο το σημειο βασικα δεν το εχω καταλάβει
Αν έχει αλλάξει τον $gp σε 0x10000000 είναι σωστό αυτο που κάνει ο vlassis , τουλάχιστον έτσι νομίζω .


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: mrboombastic on April 26, 2015, 21:06:13 pm
Παιδιά έχω το εξής θέμα... Όταν τρέχω το πρόγραμμα μόλις τελειώνει η εκτέλεσή του, εμφανίζεται ένα παράθυρο που λέει error: attempt to execute non-instruction at 0x00400184.(Δεν ξέρω αν παίζει ρόλο αλλά ο PC δείχνει στην τιμή 400184). Έχει κανείς καμιά ιδέα για το τί μπορεί να φταίει;

μάλλον δεν έχεις συντάξει κάποια εντολή σωστά,το ξανακοίταξες?
Απλά τρέχει κανονικά. Δηλάδη είσαγω τιμές, μου εκτυπώνει τα αντίστοιχα μηνύματα,όλα κομπλέ αλλά μόλις τελειώνει το προγραμμα μου εμφανίζει αυτό.Μήπως παίζει ρόλο το γεγονός ότι χρησιμοποιώ sp και θα πρέπει στο τέλος να κάνω κάτι σαν "αποδέσμευση";
αν θυμαμαι καλα στα παραδειγματα που εχει, αν εχεις κανει στην αρχη του προγραμματος κατι του στυλ "add $sp,$sp,-12 " πρεπει και στο τελος να κανεις την αντιθετη πραξη ακριβως..
η δοκιμασε στο τελος να βαλεις την εντολη "jr $ra" αν δεν την εχεις ηδη ..
Σ'ευχαριστώ πολύ... Αυτό έφταιγε τελικά!!


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Vlassis on April 27, 2015, 00:11:05 am
Εχεις δικιο σ αυτο ναι, απλα το εκανα καπως αλλιως..αποθηκευσα τις τιμες των διακοπτων σχετικα στον $gp και καθε φορα εκανα:
lw $t1, 0($gp)   
andi $t1, $t1, 0x1

και μετα 4($gp) και $t2 για τον 2ο διακοπτη κλπ..

Δεν ξερω αν ειναι σωστο γιατι λεει να τα αποθηκευουμε στο 0x10000000 και οχι στο $gp που ειναι στο  0x10008000. Αυτο το σημειο βασικα δεν το εχω καταλάβει
Αν έχει αλλάξει τον $gp σε 0x10000000 είναι σωστό αυτο που κάνει ο vlassis , τουλάχιστον έτσι νομίζω .
πως γινεται αυτο ;  :D
κομπλε boombastic  8))


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: airpap on April 27, 2015, 16:16:02 pm
ρε παιδια εχει καποιος την περσινη εργασια για να παρουμε καποιο "κλου"??? εχω χαθει τελειως


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: mrboombastic on April 27, 2015, 17:19:45 pm
Ουσιαστικά θέλει ο καταχωρητής στον οποίο αποθηκεύσαμε τις καταστάσεις των τριών διακοπτών να είναι στη θέση 0x10000000???


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: NaVi.Mitsos on April 28, 2015, 14:02:52 pm
Η εντολή mtc0 τι κάνει ;Χρειάζεται να χρησιμοποιηθεί;


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: bsp on April 28, 2015, 18:32:15 pm
Από eThmmy

Quote
Παράταση Υποβολής 1ής εργασίας

28 Απρ 2015 11:42 πμ
Καλογιάννης

Αγαπητοί φοιτητές,

δίνεται μια παράταση στην υποβολή της 1ής εργασίας στην Αρχιτεκτονική Υπολογιστών
για το Εαρινό Εξάμηνο 2015.
Τελική ημερομηνία υποβολής , Κυριακή 3 Μαΐου (23:59).


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: τσαι-borg on April 28, 2015, 18:48:14 pm
Η εντολή mtc0 τι κάνει ;Χρειάζεται να χρησιμοποιηθεί;

mtc0 rd, rt

Moves data from general purpose register rt to coprocessor 0 register rd.
(γιατί να το κάνεις αυτό;)

Ουσιαστικά θέλει ο καταχωρητής στον οποίο αποθηκεύσαμε τις καταστάσεις των τριών διακοπτών να είναι στη θέση 0x10000000???

Προσωπικά μου φαίνεται αρκετά περίεργο που ζητάει κάτι τέτοιο δεδομένου του ότι εκεί είναι που αρχίζεις να γράφεις το κείμενο του κώδικα, nevertheless, για να μεταφέρεις εκεί τον gp αρκεί η εντολή la $gp,0x10000000.
Ωστόσο, στις συχνές ερωτήσεις στο ετήμμυ έχει μία απάντηση από την περσινή εργασία που λέει ότι αν δουλεύει θα είσαι gg.
Επειδή λέει να χρησιμοποιηθεί μόνο ένας καταχωρητής ίσως χρειάζεται η εντολή sb αντί της sw για την αποθήκευση της κατάστασης κι αντίστοιχα 0($gp), 1($gp), 2($gp). Σε αυτήν την περίπτωση προσοχή στις μάσκες που θα χρειαστούν για την απομόνωση.




Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Vlassis on April 28, 2015, 21:35:36 pm
Σ αυτο που λες στο τελος μηπως πρεπει να ειναι 0($gp), 4($gp),8($gp) ;
Το λεω γιατι κατι τετοιο διαβασα στο τοπικ της περσινης εργασιας ..


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: kaspas on April 28, 2015, 21:44:00 pm


Προσωπικά μου φαίνεται αρκετά περίεργο που ζητάει κάτι τέτοιο δεδομένου του ότι εκεί είναι που αρχίζεις να γράφεις το κείμενο του κώδικα, nevertheless, για να μεταφέρεις εκεί τον gp αρκεί η εντολή la $gp,0x10000000.



Εγώ αυτό που έκανα για να μην αρχίζουν τα κείμενα του κώδικα από το 0x10000000 είναι προσθέσω πριν τα κείμενα ένα .word 0 για να έχω την διεύθυνση 0x10000000 κενή.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: τσαι-borg on April 28, 2015, 22:33:59 pm
Σ αυτο που λες στο τελος μηπως πρεπει να ειναι 0($gp), 4($gp),8($gp) ;
Το λεω γιατι κατι τετοιο διαβασα στο τοπικ της περσινης εργασιας ..

Δεν είναι λάθος αυτό αλλά θεωρησα οτι όπως το διατυπωνει θέλει να χρησιμοποιηθεί και μια θέση μνήμης αντί να πιάσεις 96 bit για να αποθηκευεσεις 3. Αν το αποθηκευσεις ως byte αντί για λεξη μπορείς να τα χωρεσεις στην ίδια θέση μνήμης κι όχι στις δυο επόμενες που είναι οι 4 και 8.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: τσαι-borg on April 28, 2015, 22:45:02 pm


Προσωπικά μου φαίνεται αρκετά περίεργο που ζητάει κάτι τέτοιο δεδομένου του ότι εκεί είναι που αρχίζεις να γράφεις το κείμενο του κώδικα, nevertheless, για να μεταφέρεις εκεί τον gp αρκεί η εντολή la $gp,0x10000000.



Εγώ αυτό που έκανα για να μην αρχίζουν τα κείμενα του κώδικα από το 0x10000000 είναι προσθέσω πριν τα κείμενα ένα .word 0 για να έχω την διεύθυνση 0x10000000 κενή.

Και να μην το κανεις αυτό παλι θα δουλεύει, δεν είναι τόσο βλαμμενο ευτυχώς. Συνεχιζει να μου φαίνεται περίεργο όμως δεδομένου του οτι υπάρχει συγκεκριμένος χωρος για στατικά δεδομένα. Meh


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθ&#
Post by: Ancient on April 28, 2015, 22:46:00 pm
Ο Καλογιάννης είπε ότι το μόνο στο οποίο χρειάζεται αυτό είναι για να κάνεις .data 0x10000000 και τίποτα παραπάνω.

Αποθήκευση διακοπτών σε καταχωρητή, όχι στη μνήμη.


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: Mr K on April 30, 2015, 14:18:40 pm
Ο Καλογιάννης είπε ότι το μόνο στο οποίο χρειάζεται αυτό είναι για να κάνεις .data 0x10000000 και τίποτα παραπάνω.

Αποθήκευση διακοπτών σε καταχωρητή, όχι στη μνήμη.

Λέει αποθήκευση σε καταχωρητή αλλά στη μνήμη στατικών δεδομένων


Title: Re: [Αρχιτεκτονική Υπολογιστών] Πρώτη Εργασία - Προθεσμία 30/04
Post by: gian26 on May 01, 2015, 18:54:05 pm
πως πρεπει ν ονομασουμε τ αρχειο π θ ανεβασουμε?