Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I\'m having a hard time understanding why my MIPS program is not outputing the e

ID: 3543015 • Letter: I

Question

 I'm having a hard time understanding why my MIPS program is not outputing the expected result. Please refer to the c++ code, followed is my version of mips  **The C++ version:**      #include <iostream>     using namespace std;          int x[10] = {0};     int pos[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};     int d[10] = {73, 47, 23, 26, 67, 99, 13, 53, 1, 97};          int main()      {              int count = 0;         int key = 24;         for (int i=0; i<10; i++)          {             if (d[i] >= key)              {                 pos[count] = i;                 x[count] = d[i];                 count++;             }         }              for (int i=0; i<10; i++)          {             if (pos[i] < 0)                 break;                 cout << pos[i] << " " << x[i] << endl;         }                  system("PAUSE");         return 0;     }       ___________________________________________  **My MIPS version:**          .data          x:           .word   0         .word   0         .word   0         .word   0         .word   0         .word   0         .word   0         .word   0         .word   0         .word   0          pos:                 .word   -1         .word   -1         .word   -1         .word   -1         .word   -1         .word   -1         .word   -1         .word   -1         .word   -1         .word   -1          d:           .word   73         .word   47         .word   23         .word   26         .word   67         .word   99         .word   13         .word   53         .word   1         .word   97          sp:         .asciiz " "     endl:       .asciiz " "          # $s0       count     # $s1       key     # $s2       i              .text         .globl main              main:                addi    $s0, $0, 0              #  int count = 0;         addi    $s1, $0, 24     #  int key = 24;         addi    $s2, $0, 0              #  int i = 0         la      $s3, d          #  address of d into s3         la      $s4, pos                #  address of pos into s4         la      $s5, x          #  address of x into s5                                                                                                       #  for (int i=0; i<10; i++) {     loop:                               #  $t0 = temp_array_0                    sll     $t0, $s2, 2     #  temp_array_0 = i * sizeof(int)                           lw      $t0, d($t0)     #  $t0 = d[i]         blt     $t0, $s1, loop1 #  if (d[i] < key)                                         #  temp_array_1         sll     $t1, $s0, 2             #  temp_array_1 = count * sizeof(int)         sw      $s2, pos($t1)   #  pos[count] = i         sw      $t0, x($t1)     #  x[count] = d[i]         addi  $s0, $s0, 1       #  count++         addi    $s2, $s2, 1     #  i++         blt     $s2, 10, loop   #  i < 10 }                                         #  for (int i=0; i<10; i++) {     loop1:                              #  $t2 = temp_array_2         sll     $t2, $s2, 2     #  temp_array_2 = i * sizeof(int)         lw      $t2, pos($t2)   #  temp_array_2 = pos[i]         bge     $t2, 0, for1    #  break }         addi    $s2, $s2, 1     #  i++              for1:                lw      $a0, ($s4)         li      $v0, 1         syscall         la      $a0, sp         li      $v0, 4         syscall         lw      $a0, ($s5)         li      $v0, 1         syscall         la      $a0, endl         li      $v0, 4         syscall         addi    $s3, $s3, 4         addi    $s4, $s4, 4              addi    $s5, $s5, 4         addi    $s2, $s2, 1         blt     $s2, 10, for1          exit:         li      $v0, 10         syscall __________________________________      **The expected result:**       0 73     1 47     3 26     4 67     5 99     7 53     9 97     Press any key to continue . . .  **My result by using MARS**          0 73     1 47     -1 0     -1 0     -1 0     -1 0     -1 0     -1 0          -- program is finished running --  

Explanation / Answer

problem 1 is that you are exiting "loop" as soon as it encounters a value d[i]
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote