MIPS GCC 5.4 Code:
main:
addiu $sp,$sp,-72
sw $fp,68($sp)
move $fp,$sp
sw $0,8($fp)
$L5:
lw $2,8($fp)
nop
slt $2,$2,10
beq $2,$0,$L2
nop
sw $0,12($fp)
$L4:
lw $3,12($fp)
lw $2,16($fp)
nop
slt $2,$3,$2
beq $2,$0,$L3
nop
lw $3,8($fp)
lw $2,12($fp)
nop
addu $3,$3,$2
lw $2,12($fp)
nop
sll $2,$2,2
addiu $4,$fp,8
addu $2,$4,$2
lw $2,12($2)
nop
addu $3,$3,$2
lw $2,12($fp)
nop
sll $2,$2,2
addiu $4,$fp,8
addu $2,$4,$2
sw $3,12($2)
lw $2,12($fp)
nop
addiu $2,$2,1
sw $2,12($fp)
b $L4
nop
$L3:
lw $2,8($fp)
nop
addiu $2,$2,1
sw $2,8($fp)
b $L5
nop
$L2:
move $2,$0
move $sp,$fp
lw $fp,68($sp)
addiu $sp,$sp,72
j $31
nop
'I nililai e ilu, following C eode i o MIPS :ritannlly et Kle. Nillne that the...
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;
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;
1. Convert the following C statement to MIPS code. Assume x, y and z are assigned to registers $s0, $s1 and $s2 respectively and the starting address of array A is $s6. x = y + z + A[3] 2. 2.Convert the following C statement to MIPS code. Assume the base address of array A is $s3 and h is assigned to register $s2 . A[7] = h + A[7]
For the following C statement, what is the corresponding MIPS assembly code? Assume that the variables i, and j are assigned to registers $s0, $s1, respectively. Assume that the base address of the arrays A and B are in registers $s2 and $s3, respectively. B[i] = A[i] - 10
Compile the following C while loop into MIPS assembly code assuming the following register-variable mapping shown below. Also assume the array A holds integers.//$s0: A, $s1: I, $s2: j, $s3: x for(i=0; i<100; i++) {x=0; for(j = i + l; j < 100; j++) {x = x + A [j];} A[i] = x;}
C to MIPS Conversion C variable h i j k x int a[] or &a[0] MIPS register replacement $s0 $s1 $s2 $s3 $s4 $a0 Translate to MIPS. DO NOT USE pseudo MIPS instructions (e.g., BGE). Answer MUST use true 32-bit MIPS instructions: if(j < k ) a[j] = 1; else j = a[j];
2.9 5 $2.2, 2.3> Translate the following C code to MIPS. Assume that the variables f, g, h, i, and j are assigned to registers $s0, $s1, $s2, $s3, and $s4, respectively. Assume that the base address of the arrays A and B are in registers $s6 and $s7, respectively. Assume that the elements of the arrays A and B are 4-byte words: fAlBg
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...
For C to MIPS Conversion C variable h i j k x int a[] or &a[0] MIPS register replacement $s0 $s1 $s2 $s3 $s4 $a0 Translate to MIPS. No credit for pseudo-MIPS instructions (e.g., BGE). The answer MUST use true 32-bit MIPS instructions: if(j < k ) a[j] = 1; else j = a[j];
Convert the following C fragment to equivalent MIPS assembly language. Assume that the variables a, b, c, d, i and x are assigened to registers $t1, $t2, $t3, $t4, $s0 and $s1 respectively. Assume that the base address of the array A and B is in register $a0 and $a1 respectively. if (a > 0) b = a + 10; else b = a - 10;