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

MIPS ASSEMBLY


AMALDA

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

ΓΝΩΡΙΖΕΙ ΚΑΝΕΙΣ ΠΩΣ ΕΙΝΑΙ Η  ΣΩΣΤΗ ΜΕΤΑΤΡΟΠΗ ΤΟΥ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑΤΟΣ 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;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Καλησπέρα !

Κατ' αρχήν συγνώμη που άργησα ν' απαντήσω, το μήνυμά σου το είδα μόλις τώρα.
Το τμήμα κώδικα 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    


   

Επεξ/σία από White_Cat
  • Thanks 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...