• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
June 16, 2025, 04:11:21 am

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
June 16, 2025, 04:11:21 am

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
[Διανεμημένη Παραγωγή] Γε...
by Διάλεξις
[Today at 01:56:37]

[Σ.Π.Η.Ε.] Γενικές απορίε...
by nmpampal
[Today at 00:16:23]

Ισραήλ - Ιράν: Πόλεμος στ...
by Katarameno
[June 15, 2025, 20:08:49 pm]

Αντικατάστασης πυκνωτή σε...
by nmpampal
[June 15, 2025, 16:25:56 pm]

[Σ.Π.Η.Ε.] Παλιά θέματα -...
by nmpampal
[June 15, 2025, 06:43:15 am]

Το thmmy.gr στο instagram...
by Mr Watson
[June 15, 2025, 00:50:23 am]

[Λογισμός ΙΙ] Απορίες σε...
by el mariachi
[June 14, 2025, 20:47:07 pm]

ΠΡΟΣΟΧΗ στο ανέβασμα θεμά...
by tzortzis
[June 14, 2025, 16:54:08 pm]

Ρυθμίσεις Θεμάτων της Ανώ...
by el mariachi
[June 14, 2025, 11:56:45 am]

Πότε θα βγει το μάθημα; -...
by Nikos_313
[June 14, 2025, 10:00:55 am]

Αποτελέσματα Εξεταστικής ...
by Nikos_313
[June 14, 2025, 10:00:18 am]

Αρχείο Ανακοινώσεων [Arch...
by Nikos_313
[June 14, 2025, 09:58:14 am]

Αλέξης Τσίπρας, η επιστρο...
by Yamal
[June 14, 2025, 04:42:23 am]

Έναρξη Δηλώσεων Συμμετοχή...
by IEEE SB
[June 14, 2025, 00:10:19 am]

[Δυναμική Συμπεριφορά ΣΗΕ...
by soko_freta
[June 13, 2025, 01:05:36 am]

[Εφ.Θερμοδυναμική]Παλιά θ...
by Giannis Masterio
[June 12, 2025, 22:30:38 pm]

Paid Internships in a Eur...
by okan
[June 12, 2025, 22:30:02 pm]

[ΔΣΗΕ] Γενικές απορίες, α...
by tasos_ntv
[June 12, 2025, 21:38:52 pm]

[Ηλεκτρονική Ι] Απορίες σ...
by RogueSoftware
[June 12, 2025, 12:19:21 pm]

[Εφ.Θερμοδυναμική] Γενικέ...
by chris_krkls
[June 12, 2025, 11:20:29 am]
Στατιστικά
Members
Total Members: 9958
Latest: valco08
Stats
Total Posts: 1426662
Total Topics: 31711
Online Today: 201
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 10
Guests: 80
Total: 90
Bit4Thought
Yamal
kkuro123
Vgs
Mr Watson
dorapangeiou
DarkMagiK06
Tasos Bot
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

Νέα!
Πληροφορίες Καθηγητών
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 4ο Εξάμηνο > 4ο Εξάμηνο - ΠΠΣ > Αρχιτεκτονική Υπολογιστών (Moderators: chatzikys, tzortzis) > [Αρχιτεκτονική Υπ.] 2η Εργασία
0 Members and 1 Guest are viewing this topic.
Pages: [1] 2 3 ... 5 Go Down Print
Author Topic: [Αρχιτεκτονική Υπ.] 2η Εργασία  (Read 10410 times)
George_RT
Veteran
Εθισμένος στο ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 830



View Profile
[Αρχιτεκτονική Υπ.] 2η Εργασία
« on: April 19, 2014, 21:23:52 pm »

Δεύτερη Εργαστηριακή Εργασία

Η εργασία πρέπει να υποβληθεί ηλεκτρονικά στο eTHMMY μέχρι 1 Ιουνίου 2014, ώρα 12:00 το μεσημέρι

Περιγραφή

Γράψετε πρόγραμμα στη γλώσσα Assembly του MIPS που να εκτελεί τις παρακάτω λειτουργίες:

1.Να μπορεί ο χρήστης του προγράμματος να εισάγει από την κονσόλα του προσομοιωτή του MIPS, QtSpim, τις τιμές των στοιχείων δυο πινάκων Α, Β, διαστάσεων 3Χ3 ο καθένας που πρέπει να είναι πραγματικοί αριθμοί. Το πρόγραμμα να τυπώνει ακολουθιακά στην οθόνη το όνομα κάθε στοιχείου του κάθε πίνακα, ο χρήστης να εισάγει ένα πραγματικό αριθμό σto κάθε στοιχείο. Και στη συνέχεια να τυπώνει το επόμενο στοιχείο, όπως δείχνεται στο σχήμα 1,

a(0,0) = <εισαγωγή αριθμού> <enter>

a(0,1) =<εισαγωγή αριθμού><enter>

.

.

.

a(2,0) =<εισαγωγή αριθμού><enter>

a(2,1) =<εισαγωγή αριθμού> <enter>

a(2,2) =<εισαγωγή αριθμού><enter>

b(0,0) =<εισαγωγή αριθμού><enter>

b(0,1) =<εισαγωγή αριθμού><enter>

b(0,2) =<εισαγωγή αριθμού><enter>

.

.

.

b(2,2) =<εισαγωγή αριθμού><enter>



2. Να εκτελεί την ακόλουθη πράξη των πινάκων

D=Α*Β

3.Nα τυπώνει στην κονσόλα το αποτέλεαμα της πράξης με το τρόπο που δείχνεται στο σχήμα 2.

d(1,1)=
d(1,2)=
d(1,3)=
d(2,1)=
d(2,2)=
Cd2,3)
d(3,1)=
d(3,2)=
d(3,3)=
Σχήμα 2

1.Οι αρχικές διευθύνσεις των πινάκων μπορούν να είναι παράμετροι και να βρίσκονται στους καταχωρητές $a0, $a1, $a2.

2.Οι πραγματικοί αριθμοί που θα εισάγονται στο πρόγραμμα θα πρέπει να μετατρέπονται σε αριθμούς κινητής υποδιαστολής και οι υπολογισμοί κινητής υποδιαστολής να γίνονται με διπλή ακρίβεια.

3.Για την υλοποίηση της ζητούμενης πράξης μπορείτε να υλοποιήσετε την ακόλουθη ρουτίνα σε γλώσσα C.

Code:
Void mm ( double a[][], double b[][ )

{

int i, j, k;

for (i=0; i! = 3; i = i+1) for (j = 0; j! = 3; j = j+1) for (k = 0; k! = 3; k = k+1)

d[i][j] = d[I][j]+a[i][κ] * b[κ][j]

}

4.Υποθέστε ότι οι ακέραιες μεταβλητές i, j και k βρίσκονται στους $s0, $s1, και $s2.

5.Για να υπολογίσετε την εκάστοτε διεύθυνση των στοιχείων a[j] πρέπει να θεωρήσετε ένα τρόπο αποθήκευσης κάθε διδιάστατου πίνακα στη μνήμη. Ο συνήθης τρόπος που θεωρούν οι μεταγλωττιστές γλωσσών υψηλού επιπέδου είναι κάθε γραμμή να αποθηκεύεται ως μονοδιάστατος πίνακας, και οι διαδοχικές γραμμές να αποθηκεύονται η μια κάτω από την άλλη. Έτσι για να βρεθεί o αριθμοδείκτης του πρώτου στοιχείου της i γραμμής πρέπει να πολλαπλασιασθεί ο δείκτης i με το πλήθος των στοιχείων της i γραμμής , που στην περίπτωση της άσκησης αυτής είναι 3. Για να βρεθεί ο αριθμοδείκτης οπουδήποτε άλλου στοιχείου

a[j] πρέπει στο παραπάνω γινόμενο να προστεθεί το j. Επι πλέον για να βρεθεί και η διευθυνση της μνήμης στην οποία είναι αποθηκευμένο το στοιχείο πρέπει να γίνει η πράξη:

Διεύθυνση=(Διεύθυνση βάσης του πίνακα a) +(i*3+j)*4

στην περίπτωση που οι τιμές των στοιχείων είναι εκφρασμένες σε μορφή κινητής υποδιαστολής απλής ακρίβειας.

Αν χρησιμοποιείται διπλή ακρίβεια τότε η διεύθυnση υπολογίζεται από τη σχέση:

Διεύθυνση=(Διεύθυνση βάσης του a)+(i*3+j)*8

6.Όταν προσδιορισθεί η διεύθυνση του στοιχείου a[j] γίνεται η φόρτωσή του σε κάποιο καταχωρητή κινητής υποδιαστολής και επαναλάμβάνεται παρόμοια διαδικασία για την αποθήκευση σε καταχωρητές κινητής υποδιαστολής των στοιχείων b [j].

7.Όταν έχουν φορτωθεί τα δεδομένα, μπορούν να γίνουν οι πράξεις πολλαπλασιασμού των στοιχείων a[k]*b[k][j] και η συσσώρευση του αποτελέσματος στον καταχωρητή του d[j].

8.Για την εκτύπωση των ονομάτων των στοιχείων των σχημάτων 1 και 2 και των αριθμών που αντιστοιχούν σε αυτά θα πρέπει να γίνει επαναλαμβανόμενη χρήση των κατάλληλων syscall.


Logged
DarkPassenger
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 614


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #1 on: May 03, 2014, 22:50:03 pm »

Τα string α(0,0) α(0,1)...b(0,0) κλπ πρέπει να τα γράψουμε σε 18 (9+9) διαφορετικά string-οσα δηλαδή και τα στοιχεία των πινακων- ή υπάρχει τρόπος να γράψουμε σε loop π.χ α(i,j) και να αλλάζουμε τις τιμές στα i και j??
Logged
PanteGrv
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Gender: Male
Posts: 606



View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #2 on: May 04, 2014, 12:59:03 pm »

Πίνακας με τις διευθύνσεις των string?
Logged

“The strangest and most fantastic fact about negative emotions is that people actually worship them.”
P.D. Ouspensky
Ο Ουσπένσκι υποστηρίζει  ότι τα αρνητικά συναισθήματα(θυμός, λύπη, πίκρα, απογοήτευση), αν και υπαρκτά και δικαιολογίσιμα, αποκτούν διάρκεια και σημασία σαν οντότητες από το άτομο οικειοθελώς. Δηλαδή ο άνθρωπος "τραβάει" αυτές τις καταστάσεις στα όριά τους, εμμένει σε αυτές, στήνει τα σκηνικό του βασανιστηρίου του. Επειδή αυτή είναι η δική μου οπτική για αυτά που διάβασα,αξίζει κανείς να ψάξει το θέμα αυτό.
gt
Θαμώνας
****
Posts: 321


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #3 on: May 04, 2014, 15:52:24 pm »

Quote from: DarkPassenger on May 03, 2014, 22:50:03 pm
Τα string α(0,0) α(0,1)...b(0,0) κλπ πρέπει να τα γράψουμε σε 18 (9+9) διαφορετικά string-οσα δηλαδή και τα στοιχεία των πινακων- ή υπάρχει τρόπος να γράψουμε σε loop π.χ α(i,j) και να αλλάζουμε τις τιμές στα i και j??

Εννοειται Loop οπου αλλαζεις τα i,j κυριως για δικη σου ευκολια αλλα και για "δομημενο"-σωστο προγραμματισμο...σαν string πρεπει μονο να εχεις τα "α( ","b(", το "," και το ")"
Logged
DarkPassenger
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 614


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #4 on: May 04, 2014, 16:01:24 pm »

Quote from: gt on May 04, 2014, 15:52:24 pm
Quote from: DarkPassenger on May 03, 2014, 22:50:03 pm
Τα string α(0,0) α(0,1)...b(0,0) κλπ πρέπει να τα γράψουμε σε 18 (9+9) διαφορετικά string-οσα δηλαδή και τα στοιχεία των πινακων- ή υπάρχει τρόπος να γράψουμε σε loop π.χ α(i,j) και να αλλάζουμε τις τιμές στα i και j??

Εννοειται Loop οπου αλλαζεις τα i,j κυριως για δικη σου ευκολια αλλα και για "δομημενο"-σωστο προγραμματισμο...σαν string πρεπει μονο να εχεις τα "α( ","b(", το "," και το ")"
μαλιστα, και αυτό μπορεί να γινει εύκολα? γιατι δε μας εδειξε και τρομερα πραγματα στις διαλεξεις....
Logged
gt
Θαμώνας
****
Posts: 321


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #5 on: May 04, 2014, 17:20:00 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 και μετα συνεχιζεις στο προγραμμα σου...
Logged
DarkPassenger
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 614


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #6 on: May 08, 2014, 00:52:56 am »

Quote from: gt on May 04, 2014, 17:20:00 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: νομίζω το βρήκα
« Last Edit: May 08, 2014, 01:48:48 am by DarkPassenger » Logged
gt
Θαμώνας
****
Posts: 321


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #7 on: May 08, 2014, 14:01:22 pm »

Quote from: DarkPassenger on May 08, 2014, 00:52:56 am
Quote from: gt on May 04, 2014, 17:20:00 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 κελια..
Logged
DarkPassenger
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 614


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #8 on: May 08, 2014, 14:36:41 pm »

Quote from: gt on May 08, 2014, 14:01:22 pm
Quote from: DarkPassenger on May 08, 2014, 00:52:56 am
Quote from: gt on May 04, 2014, 17:20:00 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 κελια..
ευχαριστω για την απαντηση, θα το δοκιμασω αν κ το εκανα αλλιως..
εκανα αυτό εγω:

s.d $f0, arrayA($t2)   
addi $t2, $t2, 8

και δουλευει μια χαρα!
Logged
gt
Θαμώνας
****
Posts: 321


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #9 on: May 09, 2014, 10:59:08 am »

Quote from: DarkPassenger on May 08, 2014, 14:36:41 pm
Quote from: gt on May 08, 2014, 14:01:22 pm
Quote from: DarkPassenger on May 08, 2014, 00:52:56 am
Quote from: gt on May 04, 2014, 17:20:00 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 κελια..
ευχαριστω για την απαντηση, θα το δοκιμασω αν κ το εκανα αλλιως..
εκανα αυτό εγω:

s.d $f0, arrayA($t2)   
addi $t2, $t2, 8

και δουλευει μια χαρα!
:???:Δεν ξερω αν ειναι σωστο, πρωτη φορα βλεπω κατι τετοιο αλλα αν σου δουλευει σωστα ΟΚ..
Logged
DarkPassenger
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 614


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #10 on: May 09, 2014, 11:24:31 am »

Quote from: gt on May 09, 2014, 10:59:08 am
Quote from: DarkPassenger on May 08, 2014, 14:36:41 pm
Quote from: gt on May 08, 2014, 14:01:22 pm
Quote from: DarkPassenger on May 08, 2014, 00:52:56 am
Quote from: gt on May 04, 2014, 17:20:00 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 κελια..
ευχαριστω για την απαντηση, θα το δοκιμασω αν κ το εκανα αλλιως..
εκανα αυτό εγω:

s.d $f0, arrayA($t2)   
addi $t2, $t2, 8

και δουλευει μια χαρα!
:???:Δεν ξερω αν ειναι σωστο, πρωτη φορα βλεπω κατι τετοιο αλλα αν σου δουλευει σωστα ΟΚ..
το βρήκα σε σαιτ με οδηγιες κ' παραδείγματα  για mips, οπότε υποθετω πως είναι σωστό
Logged
sk0uf
Ανερχόμενος/Ανερχόμενη
**
Posts: 88


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #11 on: May 12, 2014, 20:37:31 pm »

H πραξη που ζηταει ειναι η D=A*B ,παρολ'αυτα στον αλγοριθμο που μας δινει γραφει d[j]=d[j]+a[j]*b[j] δηλαδη η πραξη D=D+A*B ,τυπογραφικο λαθος να υποθεσω;
« Last Edit: May 12, 2014, 21:09:06 pm by sk0uf » Logged
gt
Θαμώνας
****
Posts: 321


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #12 on: May 12, 2014, 23:39:47 pm »

Quote from: sk0uf on May 12, 2014, 20:37:31 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]
« Last Edit: May 12, 2014, 23:45:41 pm by gt » Logged
vasilis94
Veteran
Μόνιμος κάτοικος ΤΗΜΜΥ.gr
******
Gender: Male
Posts: 1511



View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #13 on: May 16, 2014, 12:23:45 pm »

Quote from: George_RT on April 19, 2014, 21:23:52 pm
2.Οι πραγματικοί αριθμοί που θα εισάγονται στο πρόγραμμα θα πρέπει να μετατρέπονται σε αριθμούς κινητής υποδιαστολής και οι υπολογισμοί κινητής υποδιαστολής να γίνονται με διπλή ακρίβεια.

Καταλαβαίνει κάποιος από εδώ ή γενικά από την εκφώνηση τι από τα παρακάτω πρέπει  να κάνουμε:
> Από ότι είδα υπάρχει syscall για να διαβάζεις double, τα διαβαζεις όλα ως double, τα φορτώνεις/αποθηκεύεις με l.d και όλα τα κάνεις με διπλή τελοσπάντων.
> Τα αποθηκεύεις ως floats 4 byte στη μνήμη και κάθε φορά που θέλεις να κάνεις πράξεις κάνεις ένα cvt (convert to double) και μετά η πράξη σε double.

Λογικό είναι το πρώτο αλλά λέει και ξαναλέει για πραγματικούς αριθμούς που εισάγονται (δηλαδή?), μετατροπή σε κινητή υποδιαστολή και υπολογισμούς με διπλή ακρίβεια.
Logged
iliachry
Καταξιωμένος/Καταξιωμένη
***
Posts: 203


View Profile
Re: [Αρχιτεκτονική Υπ.] 2η Εργασία
« Reply #14 on: May 16, 2014, 13:27:07 pm »

εγώ τα αποθηκεύω σε απλής ακρίβειας, κάνω πράξεις απλής ακρίβειας ανάμεσα στους πίνακες A και Β, και όταν πρέπει να κάνω αυτή την εντολή (d[ι][j] = d[j]+a[ι][κ]  * b[κ][j]) αναγκαστικά μετατρέπω σε διπλής ακρίβειας το a [ι][k]*b[k][j]!

νομίζω αυτό είναι και το πιο σωστό γιατί δεν υπάρχει περίπτωση να έχουμε υπερχείλιση!
Logged
Pages: [1] 2 3 ... 5 Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...