Translate the following C++ program into MAL (MIPS Assembly Langage). Your solution should have all necessary data allocations, input/output instructions etc, and must compile and run correctly in spim. Make sure your loops are efficient (i.e., they should not have unnecessary branches).
Given: userInput is in $s0 and index is in $s1. (These variables should not be allocated in the .data section.) You may use any other $s? or $t? registers as temporaries.
for (int index = 8; index > 0; index--)
{
cout >> (userInput >> index - 1) % 2;
}
cout >> “\n”;
}
}
Question:
Translate the following C++ program into MAL (MIPS Assembly Langage). Your solution should have all necessary data allocations, input/output instructions etc, and must compile and run correctly in spim. Make sure your loops are efficient (i.e., they should not have unnecessary branches).
Given: userInput is in $s0 and index is in $s1. (These variables should not be allocated in the .data section.) You may use any other $s? or $t? registers as temporaries.
for (int index = 8; index > 0; index--)
{
cout >> (userInput >> index - 1) % 2;
}
cout >> “\n”;
}
}
Sol:
MIPS Code:
li $S0, 8 # s0 is a constant 8
li $S1, 0 # s1 is our counter (i)
loop:
beq $S1, $S0, end # if s1 == 8 we are done
loop body
subi $S1, $S1, 1 # sub 1 to s1
j loop # jump back to the top
end:
Translate the following C++ program into MAL (MIPS Assembly Langage). Your solution should have all necessary...
Translate the following C code to MIPS assembly code. Use a minimum number of instructions. Register allocations - i $s0 - j $s1 - base of A[] $s2 - base of B[] $s3 2) A[3] = B[i] + B[j]; 3) i = 0; while (j != A[i]) { i++; }
Translate the following C code to MIPS assembly. Assume that the values of a, b, i, and j are in registers $s0, $s1, $t0, and $t1, respectively. Also assume that $s2 holds the base address of the array D. for (i = 0: i < a: i++) for (j = 0: j < b: j++) D[2 * j] = i + j;
Translate each of the following pseudo-instructions into MIPS instructions. You should Produce a minimal sequence of MIPS instructions to accomplish the required computation. (8 Points) 1) bgt $t1, 100, Label # bgt means branch if greater than 2) ble $s2, 10, Next # ble means branch if less than or equal 3) ror $s0, $s4, 7 # ror means rotate right $s4 by 7 bits and store the result in $s0 4) neg $s5, $s4 # $s5 will have the...
Using beq only, not bge! Translate the following C code to MIPS assembly code. Use a minimum number of instructions. Assume that the values of a, b, i, and j are in registers $s0, $s1, $t0, and $t1, respectively. Also, assume that register $s2 holds the base address of the integer array D. Comments are required. for(i=1; i<a; i++) for(j=1; j<b; j++) D[2*j] = i + j;
Please answer all the questions! Thank you. For the following C statement, what would be the corresponding MIPS assembly code? Assume that the variables a, b, c, and d are given and were declared as 32-bit integers a - b - (c + 7)+ d; 1. 2. Show how the value 0xB47CA034 would be arranged in a little-endian and big-endian machine Assume the data is being stored starting with address 0 3. Convert the following base-16 numbers to base-2 a....