Show Posts
|
Pages: 1 [2] 3 4 ... 21
|
16
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
|
on: May 19, 2014, 14:55:09 pm
|
Ξέρει κανείς πως εκτυπώνω με τα στοιχεία με τη μορφή που ζητάει η άσκηση; Αν το κάνω με space τότε υπάρχει πρόβλημα πχ: d(1,1)=23 d(1,2)=323 d(1,3)=32 d(2,1)=3233 d(1,2)=32 ............. ...............................................
Βάλε string με 2-3 \t (tab). Τα στοιχίζει σχετικά... μα αυτο ειναι το θεμα, οτι η στοίχιση είναι σχετική... Aν το κανεις με double (οπως θελει η εκφωνηση) και με 3 Tab(\t) η στοιχιση θα ειναι ειναι τελεια.Γιατι οταν το κανεις με double θα σου βγαζει πχ για τον αριθμο 1.23 θα τον εμφανιζει 1,23000000 με συγκεκριμενο αριθμο μηδενικων...εδω απο οτι βλεπω εσυ λογικα δεν το εχεις κανει με double αλλιως θα εμφανιζοταν d(1,1)=23.0000000...
|
|
|
17
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 1η Εργασία
|
on: May 17, 2014, 13:36:45 pm
|
παιδια γραφω αυτον τον κωδικα και γινεται ατερμων βρογχος...μπορει να βοηθησει κανεις? L1: li $v0, 12 syscall sw $v0, 16($gp) lw $a0, 16($gp) lw $s4, 20($gp) li $s4, 75 bne $a0,$s4,L1 #elegxos gia k
Αυτο που παιρνεις δεν χρειαζεται να το αποθηκευεις και η εντολη lw $s4,20($gp) δεν κανει τιποτα αφου στην ουσια την τιμη στον $s4 την βαζεις με την εντολη li.Γραψε μονο αυτο: li $s4,75 L1: li $v0,12 syscall bne $s4,$v0,L1 Αν εχεις προβλημα με αυτο(που κανονικα δεν πρεπει) τσεκαρε μηπως εχεις ονομασει και αλλο Label L1...
|
|
|
18
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
|
on: May 16, 2014, 15:16:40 pm
|
2.Οι πραγματικοί αριθμοί που θα εισάγονται στο πρόγραμμα θα πρέπει να μετατρέπονται σε αριθμούς κινητής υποδιαστολής και οι υπολογισμοί κινητής υποδιαστολής να γίνονται με διπλή ακρίβεια.
Καταλαβαίνει κάποιος από εδώ ή γενικά από την εκφώνηση τι από τα παρακάτω πρέπει να κάνουμε: > Από ότι είδα υπάρχει syscall για να διαβάζεις double, τα διαβαζεις όλα ως double, τα φορτώνεις/αποθηκεύεις με l.d και όλα τα κάνεις με διπλή τελοσπάντων. > Τα αποθηκεύεις ως floats 4 byte στη μνήμη και κάθε φορά που θέλεις να κάνεις πράξεις κάνεις ένα cvt (convert to double) και μετά η πράξη σε double. Λογικό είναι το πρώτο αλλά λέει και ξαναλέει για πραγματικούς αριθμούς που εισάγονται (δηλαδή?), μετατροπή σε κινητή υποδιαστολή και υπολογισμούς με διπλή ακρίβεια. Αποθηκευεις κανονικα διπλης ακριβειας και κανεις πραξεις με τις εντολες διπλης ακριβειας...Αυτο εννοει...
|
|
|
19
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 1η Εργασία
|
on: May 15, 2014, 20:25:04 pm
|
Εγώ έχω το εξής θέμα.
Διαβάζω σαν integer τις τιμές των 3ων διακοπτών(κάνω και τον έλεγχο) και τις αποθηκεύω στα 0($gp),4($gp),8($gp) διαδοχικά. Όταν πάω όμως στο data segment γράφει π.χ για τιμές 1,0,1
[10008000] 00000001 00000000 00000001 00000000
οπου τα πρώτα 3 είναι προφανώς οι τιμές μου γιατί μετά είναι όλα μηδενικά.
Υποψιάζομαι οτι το πρόβλημα είναι πως διαβάζω integer που μπορεί να έχουν μικρότερο size λέξεων
Προς το παρόν το έλυσα βάζοντας τιμές 12($gp) 28($gp), 44($gp) ωστε τουλάχιστον να φαίνονται σαν 32μπιτες λέξεις, αλλα θα ήθελα εναν καλύτερο τρόπο εαν υπάρχει..
Οι τιμες που εμφανιζονται ειναι στο 16αδικο οποτε ειναι σωστες...αν παρατηρησεις κατω απο το [10008000] θα σου εμφανιζει [10008010] που σημαινει οτι σε καθε γραμμη περιεχονται 16 κελια και πιο συγκεκριμενα τα κελια [10008001],[10008002],....[1000800f]...Aρα εμφανιζονται 16 κελια...δια 4 στηλες=4 κελια η στηλη...4κελια*8bit το κελι=32bit...Επομενως η καθε στηλη σου περιεχει μια 32bit λεξη-αυτην που εισαγεις....Οποτε αυτο που σου εμφανιζει ειναι Απολυτα Σωστο...
|
|
|
20
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 1η Εργασία
|
on: May 15, 2014, 18:19:48 pm
|
πως ελέγχουμε αν δώσει ο χρήστης το k;;;; Η ιδέα μου ήταν να διαβάσω ενα char, που θα αποθηκευτεί στο $v0, να κάνω έναν καταχωρητή ίσο με 107(ascii code του k) και να τα συγκρίνω με beq
Αψογος...μονο που ο αριθμος ειναι το 75, γιατι το K ειναι Κεφαλαιο... Επειδή έχω κολλήσει, ποια είναι η εντολή ωστε να περάσω σε έναν καταχωρητή το 75! Αυτό; li $s1, 75 ή move $s2, $75 To 1..
|
|
|
21
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 1η Εργασία
|
on: May 15, 2014, 02:25:42 am
|
Μπορει καποιος να εξηγησει πως θα γινει η καταγραφη της καταστασης των διακοπτων στο λιγοτερο σημαντικο ψηφιο ενος καταχωρητη ($gp απο οτι καταλαβα) γιατι δεν πηρα καποια σαφη απαντηση απο τα σχολια των συναδελφων ?
Ευχαριστω !!
Αυτο που λαμβανεις απο το πληκτρολογιο το αποθηκευεις με την εντολη sb στο 0($gp),1($gp) κτλ...
|
|
|
23
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
|
on: May 12, 2014, 23:39:47 pm
|
H πραξη που ζηταει ειναι η D=A*B ,παρολ'αυτα στον αλγοριθμο που μας δινει γραφει d[j]=d[j]+a[j]*b[j] δηλαδη η πραξη D=D+A*B ,τυπογραφικο λαθος να υποθεσω;
Σωστη ειναι η εκφωνηση...στο d[ i][ j] συσσωρευεται το αθροισμα των πολλαπλασιασμων στηλης γραμμης για καθε ενα στοιχειο του πινακα d..στην ουσια ειναι d[ i][j]+=a[ i][κ] * b[κ][j]
|
|
|
24
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 1η Εργασία
|
on: May 12, 2014, 11:05:12 am
|
στη εκφωνηση της εργασιας λεει "Θεωρείστε ότι η κατάσταση κάθε διακόπτη καταγράφεται στο λιγότερο σημαντικό ψηφίο ενός καταχωρητή στη μνήμη των στατικών δεδομένων που αρχίζει από τη διεύθυνση 0x10008000." αρα εγω πρεπει να διαβαζω το 0 ή το 1 για καθε διακοπτη και να σωζω την κατασταση του στο λιγοτερο σημαντικο ψηφιο ενος καταχωρητη. αρα πρεπει να χρησιμοποιησω 3 καταχωρητες απο το χωρο των στατικων δεδομενων,εναν για καθε διακοπτη ετσι δεν ειναι??? καθε καταχωρητης θα εχει το 000....00000 (και τα 32 του bits 0) ή 000...001 (το τελευταιο του bit 1) ??? και για να αναφερομαι σε καθε εναν απο τους 3 καταχωρητες θα χρησιμοποιω τις διευθυνσιες 0($gp) ?????????????? 4($gp) ???????????? 8($gp) ???????????? γιατι καπου πιο πανω στ posts διαβασα αυτο ¨Ο $gp εχει by default την τιμη 0x10008000.Επομενως μπορεις να την χρησιμοποιησεις σαν τιμη διεθυνσης και να αποθηκευσεις εκει τις τιμες που θελεις σχετικα, δηλαδη 0($gp),1($gp) ktl..¨ ???? γιατι εδω φιλε λες να χρησιμοποιησω τις διευθυνσεις 0($gp) και 1($gp) ??? Η εκφωνηση ειναι λιγο μπερδεμενη...Η καταχωρητες δεν βρισκονται σε διευθυνσεις...Αλλο οι καταχωρητες και αλλο οι διεθυνσεις..Μπορεις ανα θελεις να χρησιμοποιησεις απλα 3 διαφορετικους καταχωρητες και να κανεις παλι την δουλεια σου...Απλα εγω ειμαι παλιος(το εχω περασει το μαθημα απλα ασχολουμαι με προγραμματισμους κτλ) και απο την εμπειρια μου πανω σε αυτες τις εργασιες υποψιαζομαι οτι εννοει τον καταχωρητη $gp, τον οποιο τον χρησιμοποιησε και σε παλιοτερες εργασιες κατα κορον επειδη απλα (για να σε βοηθησει κυριως...) εχει αποθηκευμενη την τιμη 0x10008000 και ετσι εσυ στην ουσια μπορεις να αποθηκευεις οχι γραφοντας την απολυτη διευθυνση αλλα σχετικα με την $gp...Η εργασια ειναι απλη, στην ουσια δεν εχει καποιο πρακτικο νοημα αυτο που θελει να κανεις, απλα θελει λιγο να παιξεις με τις εντολες και να σκεφτεις καποια πραγματα...Το καθε κελι διευθυνσης χωραει 8bit..Mια "λεξη" 32 bit θελει 4 κελια...Για αυτο οπως λες και εσυ θα μπορουσες να πηγαινεις 0($gp),4($gp) κτλ...Φυσικα και δεν ειναι λαθος...Ωστοσο με μια 32Bit λεξη μπορεις να γραψεις μεχρι τον αριθμο (2^32)-1..Σε αυτην την εργασια πρεπει να αποθηκευεις τον αριθμο 1 ή 0.Αρα και τα 8 bit του ενος κελιου σου φτανουν και σου περισσευουν..Οποτε απλα και μονο για οικονομια μνημης μπορεις να αποθηκευεις ανα 1 κελι δλδ 0($gp),1($gp)..Ξανα λεω οτι και ο τροπος που λες δεν ειναι λαθος...
|
|
|
26
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 1η Εργασία
|
on: May 10, 2014, 16:06:48 pm
|
1.Ο $gp εχει by default την τιμη 0x10008000.Επομενως μπορεις να την χρησιμοποιησεις σαν τιμη διεθυνσης και να αποθηκευσεις εκει τις τιμες που θελεις σχετικα, δηλαδη 0($gp),1($gp) ktl... 2.Μπορεις να κανεις μια απλη συγκριση με τον αριθμο 1 ή τον αριθμο 0(που ειναι αντιστοιχα 00000001 και 00000000) ή να κανεις μια andi με τον αριθμο 1, οπου ετσι το αποτελεσμα το αποτελεσμα σου ουσιαστικα κρινεται απο το τελευταιο bit του αριθμου που συγκρινεις με το ν αριθμο 1(δηλαδη αν το τελευταιο bit του αριθμου που συγκρινεις με τον αριθμο 1 ειναι 1,τοτε το αποτελεσμα σου ειναι 1,αλλιως 0,και με ενα branch στελνεις αντιστοιχα στο ON ή στο OFF)
|
|
|
27
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
|
on: May 09, 2014, 10:59:08 am
|
Ναι ειναι σχετικα ευκολο...θα χρειαστεις 2 καταχωρητες πχ $t0=1 k $t1=1 που θα ειναι το i k j αντιστοιχα και μια loop..σε καθε loop αυξανεις το $t1 και μεχρι να γινει 3 το στελνεις στο Loop..Ετσι θα φτιαξεις α(1,1),α(1,2),α(1,3).Μολις γινει 3 κανεις $t1=1 και αυξανεις $t0 και ξαναστελνεις στο loop μεχρι να γινει $t0=3 και μετα συνεχιζεις στο προγραμμα σου...
οκ τα loops τα εκανα.. διαβαζω και τιμες, αλλα δεν ξερω πως να αποθηκευσω! χρησιμοποιησα τις εντολες: li $v0, 7 syscall s.d $f0, $t2($a1) οπου αυξανω τον $t2 και τον κανω +8 σε καθε loop, αλλα μου βγαζει συντακτικο λαθος... πως να το κανω?? EDIT: νομίζω το βρήκαΤο λαθος ειναι στον $t2...σε εκεινο το σημειο θελει αριθμο και οχι καταχωρητη...αυτο που πρεπει να κανεις ειναι να γραψεις s.d $f0,0($a1) και απο κατω addi $a1,$a1,8..Ετσι καθε φορα θα αποθηκευεται στην επομενη θεση κατα 8 κελια.. ευχαριστω για την απαντηση, θα το δοκιμασω αν κ το εκανα αλλιως.. εκανα αυτό εγω: s.d $f0, arrayA($t2) addi $t2, $t2, 8 και δουλευει μια χαρα! :???:Δεν ξερω αν ειναι σωστο, πρωτη φορα βλεπω κατι τετοιο αλλα αν σου δουλευει σωστα ΟΚ..
|
|
|
28
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
|
on: May 08, 2014, 14:01:22 pm
|
Ναι ειναι σχετικα ευκολο...θα χρειαστεις 2 καταχωρητες πχ $t0=1 k $t1=1 που θα ειναι το i k j αντιστοιχα και μια loop..σε καθε loop αυξανεις το $t1 και μεχρι να γινει 3 το στελνεις στο Loop..Ετσι θα φτιαξεις α(1,1),α(1,2),α(1,3).Μολις γινει 3 κανεις $t1=1 και αυξανεις $t0 και ξαναστελνεις στο loop μεχρι να γινει $t0=3 και μετα συνεχιζεις στο προγραμμα σου...
οκ τα loops τα εκανα.. διαβαζω και τιμες, αλλα δεν ξερω πως να αποθηκευσω! χρησιμοποιησα τις εντολες: li $v0, 7 syscall s.d $f0, $t2($a1) οπου αυξανω τον $t2 και τον κανω +8 σε καθε loop, αλλα μου βγαζει συντακτικο λαθος... πως να το κανω?? EDIT: νομίζω το βρήκαΤο λαθος ειναι στον $t2...σε εκεινο το σημειο θελει αριθμο και οχι καταχωρητη...αυτο που πρεπει να κανεις ειναι να γραψεις s.d $f0,0($a1) και απο κατω addi $a1,$a1,8..Ετσι καθε φορα θα αποθηκευεται στην επομενη θεση κατα 8 κελια..
|
|
|
29
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 1η Εργασία
|
on: May 08, 2014, 13:49:41 pm
|
καταρχας σε ευχαριστω πολυ για την αμεση απαντηση οσον αφορα το 1) νομιζω οτι θελει κι αλλη μια λουπα για να τσεκαρει αν ο χρηστης δινει 0 η 1 και τωρα για το 2) δηλαδη εγω απλα θα πρεπει να βαλω μια στοιβα η οποια να ξεκιναει απο τη διευθυνση που δινει η εκφωνηση και απλα να αποθηκευω και να φορτωνω τις αντιστοιχες τιμες στους temp καταχωρητες μου? 1) Mπορεις να το κανεις απλα, χωρις λουπα...Δηλαδη 3 ελεγχους... 2) Eπειδη μας ενδιαφερει το λιγοτερο σημαντικο ψηφιο μπορεις να αποθηκευεις σε 1 byte...Μαλλον θελει να χρησιμοποιησεις τον $gp και να αποθηκευεις σχετικα δηλαδη 0($gp),1($gp)
|
|
|
30
|
Μαθήματα Βασικού Κύκλου / Αρχιτεκτονική Υπολογιστών / Re: [Αρχιτεκτονική Υπ.] 1η Εργασία
|
on: May 05, 2014, 11:51:49 am
|
Βασικα απο οτι καταλαβα εγω, θα λεει ξερω γω πατα το k για να ξεκινησει και αν παταει λαθος θα λεει λαθος,ξαναπατα μετα θα ξεκιναει ουσιαστικα το προγραμμα Η αλήθεια είναι ότι στο " με το πάτημα του γράμματος Κ στο πληκτρολόγιο θα πρέπει να αρχίζει η εκτέλεση του προγράμματος" το μπερδεύει το πράμα, αλλά και λογικό είναι και το λέει στην αρχή ότι το Κ είναι μόνο για να γίνει η λειτουργία της αντιγραφής και η είσοδος θα γίνεται σταδιακά στην αρχή. Κ εγω ετσι το καταλαβα....απλα το εκανα οταν πατας αλλο πληκτρο να μην κανει τιποτα και να μην βγαζει μηνυμα...απλα να περιμενει μονο το Κ...
|
|
|
|