Προς το περιεχόμενο

Assembly MIPS?


SpirosG86

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα. :-)

 

Προσπαθώ να υλοποιήσω στο PCSpim έναν κώδικα, κομμάτι του οποίου παραθέτω παρακάτω. Το πρόβλημα είναι ότι στην τελευταία συνθήκη η ροή πάει πάντα στο valid :S Μπορείτε να μου πείτε πού κάνω λάθος γιατι σπάω το κεφάλι μου και δεν μπορώ να βρω τί φταίει!

 

>checkLength: # vriskei to mhkos toy string

lb $t0, ($t2)  # to $t2 periexei to string
beq $t0,10,compLength	# an vrei ton Line Feed, teleiwnei h metrhsh
addi $s3, $s3, 1	# metrhths mhkoys string
addi $t2, $t2, 1 # deixnei ston epomeno xarakthra toy string
j checkLength


compLength:

add $t2, $s0, $zero # prosthetei to string ston $t2

slti $t1, $s3, 20	# s3 periexei apo prin to mhkos toy string, an einai < 20, t1=1
bne $t1, $zero, valid  # an string.length < 20, goto valid

Δημοσ.

αν το $s3 είναι <20 θα πηγαίνει στο valid άμα είναι >20 θα πάει στην επόμενη εντολή!δεν νομίζω να υπάρχει κάποιο λάθος στο πρόγραμμα!

αυτό συμβαίνει διότι στον register $t1 πηγαίνει η τιμή 1 αν το $s3<20 οπότε bne $t1,$zero,valid το $t1 περιέχει την τιμή 1 οπότε πάει στο valid!

Δημοσ.

Ναι το ξέρω, δικός μου κώδικας είναι αλλωστε :P

Δεν παει στην επόμενη, πάντα κάνει branch στο valid, το έχω τσεκάρει, πράγμα που σημαίνει ότι το $s3 για κάποιο λόγο δεν αποθηκεύει το μήκος του string, απλά δεν ξέρω ποιος είναι αυτός ο λόγος...

  • 11 μήνες μετά...
Δημοσ.

Απο το παπει εισαι;

 

---------- Το μήνυμα προστέθηκε στις 00:36 ----------

 

beq $t0,10,compLength

Αυτο δεν μου φαίνεται και τόσο σωστό. Κανονικά διευθυνση παίρνει δεν μπορεις να βαλεις τιμή άμεσα οπως εσυ εβαλες 10.

 

---------- Το μήνυμα προστέθηκε στις 00:37 ----------

 

Δηλαδή επρεπε να βαλεις σε εναν καταχωρητη το 10 πρώτα...και μετα να βαλεις οπου εχεις βαλει το 10 τον καταχωρητη

Δημοσ.

Παιδια εγω είμαι στο ΠανΠελλοπ και κανουμε μιπς.Προσπαθω να φτιαξω κωδικα για string concatenate.εχει κανεις καμια ιδεα??????

 

---------- Το μήνυμα προστέθηκε στις 13:14 ----------

 

εαν βαλεις στο beq $t0,$0,compLength δλδ τον μηδενικο,θα παρει και το \n αλλα θα ξερεις οτι τελειωσες.

 

---------- Το μήνυμα προστέθηκε στις 13:20 ----------

 

εαν βαλεις στο beq $t0,$0,compLength δλδ τον μηδενικο,θα παρει και το \n αλλα θα ξερεις οτι τελειωσες.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...