AMALDA Δημοσ. 20 Μαΐου 2020 Δημοσ. 20 Μαΐου 2020 ΓΝΩΡΙΖΕΙ ΚΑΝΕΙΣ ΠΩΣ ΕΙΝΑΙ Η ΣΩΣΤΗ ΜΕΤΑΤΡΟΠΗ ΤΟΥ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑΤΟΣ C ΣΕ MIPS ASSEMBLY main() { int i, size = 10, sum; int arr[10] = {1, 15, 0, -3, 99, 48, -17, -9, 20, 15}; sum = 0; for (i = 0; i<size; i++) { sum+=arr; } return;
Lanike71 Δημοσ. 21 Μαΐου 2020 Δημοσ. 21 Μαΐου 2020 Αν πληκτρολογήσεις στο google "sum of array in mips" θα σου βγάλει αρκετά λινκς. Έχω πολύ καιρό να ασχοληθώ με assembly. 1
White_Cat Δημοσ. 24 Μαΐου 2020 Δημοσ. 24 Μαΐου 2020 (επεξεργασμένο) Καλησπέρα ! Κατ' αρχήν συγνώμη που άργησα ν' απαντήσω, το μήνυμά σου το είδα μόλις τώρα. Το τμήμα κώδικα C που δίνεις ουσιαστικά αυτό που κάνει είναι να φορτώνει σ' ένα μονοδιάστατο πίνακα 10 ακεραίους και μετά να βρίσκει το άθροισμά τους διατρέχοντας τον πίνακα. Έγραψα λοιπόν ένα προγραμματάκι που κάνει ακριβώς αυτή τη δουλειά σε MIPS Assembly και το δίνω παρακάτω. Το άθροισμα των στοιχείων του πίνακα είναι ίσο με 169 και στο τέλος της ρουτίνας φορτώνεται στον καταχωρητή t0. Έχω βάλει αγγλικά σχόλια στον κώδικα, γιατί ο emulator που έχω δεν υποστηρίζει ελληνικά. Ελπίζω να βοηθήσει και για οποιαδήποτε απορία εδώ είμαστε. Φιλικά, Ο Άσπρος Γάτος .data array: .word 1,15,0,-3,99,48,-17,-9,20,15 arrend: sumMessage: .asciiz "The SUM is equal to " newLine: .asciiz "\n" .text main: li $t0,0 # sum = 0 la $t3,array # load base addr. of array la $t2,arrend # load address of array end j test loop: lw $t4,0($t3) # load array[i] addi $t3,$t3,4 # increment array pointer add $t0,$t0,$t4 # update sum test: blt $t3,$t2,loop # more to do? if yes, loop # print sum message li $v0,4 la $a0,sumMessage syscall # print value of sum li $v0,1 addi $a0,$t0,0 syscall # print new line li $v0,4 la $a0,newLine syscall li $v0,10 syscall Επεξ/σία 24 Μαΐου 2020 από White_Cat 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα