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

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, 12:00:31 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
[Σ.Α.Π.Γ.] Εργασία 2025
by Nikos_313
[Today at 11:59:55]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by George_RT
[Today at 10:22:18]

[Διανεμημένη Παραγωγή] Γε...
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]
Στατιστικά
Members
Total Members: 9959
Latest: valco08
Stats
Total Posts: 1426665
Total Topics: 31711
Online Today: 201
Online Ever: 2093
(April 17, 2025, 08:47:49 am)
Users Online
Users: 59
Guests: 115
Total: 174
eplysia
tsaliki
dimitris kiziridis
Nikos_313
Nekt
alexlad
thomassamaras
gtapalis
jimalexoud
astakos1
elias_farhood
Oxil
vdelimpalta
mpaltzak
mimaki
Evripidis
NET2GRID
NickKilis
gpap
rafail zisiadis
s
anastasis_sid
chatzikys
tpt
andreas2000
filkilkis
despoina15
thathas12
stefanos hios
Michalis Tsialis
EvanTsir
mor
thomasdt
artemissamaras_
Thanos_Bog
amprozos
chrisdardas
cheinopor
alexter
sdraf13
victoria ginikopoulou
diamantis
Thanoskask
kriton
noimaginationforthis
gmpatsol
dimopoul
ValKar
panagiwt1s
georkala
DimitrisKouk
matrozos
Sotiris_atha
antrikos
alexanton
Thanasiscon1
stavros0201
Εμφάνιση

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

Νέα!
Επίσημη ενημέρωση για Αντιστοίχηση Μαθημάτων ΝΠΣ με ΠΠΣ και η συζήτηση στο forum.
THMMY.gr > Forum > Μαθήματα Βασικού Κύκλου > 2ο Εξάμηνο > Οργάνωση Υπολογιστών (Moderators: chatzikys, tzortzis) > [Οργάνωση Υπολογιστών] quiz 3b
0 Members and 1 Guest are viewing this topic.
Pages: [1] Go Down Print
Author Topic: [Οργάνωση Υπολογιστών] quiz 3b  (Read 2288 times)
Wibvious
Ανερχόμενος/Ανερχόμενη
**
Posts: 68



View Profile
[Οργάνωση Υπολογιστών] quiz 3b
« on: April 10, 2019, 20:24:53 pm »

Hello everyone!

Εχει κανεις ιδεα τι παει στραβα με τον κωδικα μου για το quiz 3b? Κανει compile και δουλευει μονο για την περιπτωση οπου ο πινακας εχει μεγεθος 0. Χρησιμοποιω κατευθειαν τους καταχωρητες που εχουν τα ορισματα και δεν κανω κατι load η store (γενικα δεν χρησιμοποιω μνημη).

Η εκφωνηση:

 
Quote
Στόχος της παρούσας εργασίας είναι να υλοποιηθεί συνάρτηση, σε MIPS Assembly, η οποία έχοντας ως είσοδο τον δείκτη (pointer -- θέση μνήμης) ενός διανύσματος και το μήκος του, θα βρίσκει την τιμή του μέγιστου στοιχείου και την θέση του στο διάνυσμα. Στην περίπτωση όπου το μέγιστο στοιχείο επαναλαμβάνεται, θα επιστρέφει την θέση της τελευταίας εμφάνισής του. Η αρίθμηση ξεκινάει από το 1 (1-based indexing). Στην περίπτωση όπου το διάνυσμα είναι κενό (μήκος μηδέν) θα επιστρέφεται ο μικρότερος προσημασμένος ακέραιος και η τιμή 0 στην θέση.

Ο κωδικας:

Code:
MaxAndArg:
        li $v0, -2147483648         # $v0(MAX) is the smallest negative number
        li $v1, 0                           # $v1(POSITION) starts from zero
        li $t3, 0                           # $t3(i in a normal language) will be used to loop
        li $t4, 0                           # $t4 will be used to show the position in the array
  
L2:        
            beq $t3, $a1, EXIT        # if (i = array size) goto EXIT
 
            sll $t4, $t4, 2                # $t4 = $t4 * 4
            add $a0, $t4, $a0         # $a0 = $a0 + $t4 (next element in the array)

            blt $v0, $a0, L1             # if (max < a[j]) goto L1

            addi $t3, $t3, 1             # i++
            addi $t4, $t4, 1             # array_position++

            j L2

L1:
        addi $v0, $a0, 0          # $v0 = $a0  
        addi $v1, $t3, 1           # $v1 = i + 1 (probably works)
        addi $t3, $t3, 1           # i++
        addi $t4, $t4, 1           # array_position++

            j L2

EXIT:      
         jr     $ra                      #return


Ευχαριστω προκαταβολικα    Smiley

edit: tag
« Last Edit: April 10, 2019, 21:25:50 pm by Vlassis » Logged

Σίγουρα!! (νομίζω)
mpraskafoutas
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 850


View Profile
Re: quiz 3b
« Reply #1 on: April 10, 2019, 20:48:57 pm »

οταν ο compiler θα περάσει στο label L1, θα γίνει $t3 = $t3+1 και $t4 = $t4+1 και στο j L2 θα συνεχίσει από εκεί που σταμάτησε, άρα θα ξαναπροσθέσει 1 στους καταχωρητές $t3 και $t4.

επίσης εγώ έκανα και lw $a0, array_z($t4), όπου ο $t4 είναι στην περίπτωση σου ο καταχωρητής που χρησιμοποιείς για να προσπελάσεις τα στοιχεία του πίνακα. αυτό το έκανα επειδή θεώρησα ότι ο $a0 περιέχει τη διεύθυνση του πίνακα, μπορείς να τσεκάρεις αν χρειάζεται και αυτό (δεν θα προκαλέσει πρόβλημα στον κώδικα ούτως ή άλλως).
« Last Edit: April 10, 2019, 20:56:03 pm by mpraskafoutas » Logged
Aristos
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 584



View Profile
Re: quiz 3b
« Reply #2 on: April 10, 2019, 20:50:54 pm »

δε πολυθυμάμαι mips assembly οπότε κράτα επιφυλάξεις για ότι ακολουθεί:

Quote from: Wibvious on April 10, 2019, 20:24:53 pm
(γενικα δεν χρησιμοποιω μνημη)

αυτό είναι πρόβλημα. το διάνυσμα στη μνήμη δε βρίσκεται;

Code:
add $a0, $t4, $a0         # $a0 = $a0 + $t4 (next element in the array)
blt $v0, $a0, L1             # if (max < a[j]) goto L1

στο $a0 θα βρίσκεται η διεύθυνση του επόμενου στοιχείου. Συγκρίνεις διευθύνσεις με τιμές. Πρέπει να κάνεις load την τιμή και μετά σύγκριση.

επίσης, νομίζω πως ο τρόπος που υπολογίζεις το array_position είναι λάθος. κανε debug στον simulator και δες πως αυξάνεται. άμα θέλεις να υπολογίσεις θέση μνήμη για το array, θες διεύθυνση_του_array + 4 * i, όπου το i αυξάνει κατά 1 σε κάθε επανάληψη. εσύ το πολλαπλασιαζεις με 4 και μετά αυξάνεις το αποτέλεσμα και άλλο. υπολογίζεις δηλαδή λάθος διεύθυνση
Logged

I'd like to make the world a better place, but they won't give me the source code
Wibvious
Ανερχόμενος/Ανερχόμενη
**
Posts: 68



View Profile
Re: quiz 3b
« Reply #3 on: April 11, 2019, 10:23:30 am »

Quote from: mpraskafoutas on April 10, 2019, 20:48:57 pm
οταν ο compiler θα περάσει στο label L1, θα γίνει $t3 = $t3+1 και $t4 = $t4+1 και στο j L2 θα συνεχίσει από εκεί που σταμάτησε, άρα θα ξαναπροσθέσει 1 στους καταχωρητές $t3 και $t4.


Καλή παρατήρηση...δεν είχα στο μυαλό μου ότι συνεχίζει από εκεί που σταμάτησε.


Quote
Επίσης εγώ έκανα και lw $a0, array_z($t4), όπου ο $t4 είναι στην περίπτωση σου ο καταχωρητής που χρησιμοποιείς για να προσπελάσεις τα στοιχεία του πίνακα. αυτό το έκανα επειδή θεώρησα ότι ο $a0 περιέχει τη διεύθυνση του πίνακα, μπορείς να τσεκάρεις αν χρειάζεται και αυτό (δεν θα προκαλέσει πρόβλημα στον κώδικα ούτως ή άλλως).

Δεν καταλαβαίνω τι προσπαθείς να κάνεις με αυτή την εντολή. Το lw δεν έχει σύνταξη lw destination, offset(source) ;

Ευχαριστώ πολύ για την βοήθεια πάντως   Grin
Logged

Σίγουρα!! (νομίζω)
Wibvious
Ανερχόμενος/Ανερχόμενη
**
Posts: 68



View Profile
Re: quiz 3b
« Reply #4 on: April 11, 2019, 10:25:39 am »

Quote from: Aristos on April 10, 2019, 20:50:54 pm
δε πολυθυμάμαι mips assembly οπότε κράτα επιφυλάξεις για ότι ακολουθεί:

αυτό είναι πρόβλημα. το διάνυσμα στη μνήμη δε βρίσκεται;

Code:
add $a0, $t4, $a0         # $a0 = $a0 + $t4 (next element in the array)
blt $v0, $a0, L1             # if (max < a[j]) goto L1

στο $a0 θα βρίσκεται η διεύθυνση του επόμενου στοιχείου. Συγκρίνεις διευθύνσεις με τιμές. Πρέπει να κάνεις load την τιμή και μετά σύγκριση.

επίσης, νομίζω πως ο τρόπος που υπολογίζεις το array_position είναι λάθος. κανε debug στον simulator και δες πως αυξάνεται. άμα θέλεις να υπολογίσεις θέση μνήμη για το array, θες διεύθυνση_του_array + 4 * i, όπου το i αυξάνει κατά 1 σε κάθε επανάληψη. εσύ το πολλαπλασιαζεις με 4 και μετά αυξάνεις το αποτέλεσμα και άλλο. υπολογίζεις δηλαδή λάθος διεύθυνση

Έχεις δίκιο, ευχαριστώ πολύ για την βοήθεια. Smiley
Logged

Σίγουρα!! (νομίζω)
mpraskafoutas
Εθισμένος στο ΤΗΜΜΥ.gr
*****
Posts: 850


View Profile
Re: quiz 3b
« Reply #5 on: April 11, 2019, 12:20:01 pm »

Quote from: Wibvious on April 11, 2019, 10:23:30 am

Δεν καταλαβαίνω τι προσπαθείς να κάνεις με αυτή την εντολή. Το lw δεν έχει σύνταξη lw destination, offset(source) ;

Ευχαριστώ πολύ για την βοήθεια πάντως   Grin


το destination θα είναι ένας καταχωρητής ο οποίος θα περιέχει το τρέχον στοιχείο του πίνακα σε κάθε επανάληψη. μετά offset μπορείς να βάλεις 0 και source θα είναι καταχωρητής ο οποίος θα περιέχει το άθροισμα της διεύθυνσης + τον δείκτη που χρησιμοποιείς * 4. είναι το ίδιο πράγμα με αυτό που αναφέρει το παλικάρι πιο πάνω.
Logged
Pages: [1] Go Up Print
Jump to:  

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