Translate C++ code into MIPS assembly language. Clarification: The objective of
ID: 3803988 • Letter: T
Question
Translate C++ code into MIPS assembly language.
Clarification:
The objective of this problem is to translate the merge method written in C++ (which takes an array of two, adjacent sorted arrays i.e. [1,2,3,4,5,12,13,14,15,16] and sorts the array into one sorted array) into MIPS Assembly language. So essentially, a conversion of the code written above into MIPS
int c[100]; //c[100] is a global array
void merge(int a[], int low, int high, int mid){
int i, j, k;
i = low;
k = low;
j = mid + 1;
while (i <= mid && j <= high){
if (a[i] < a[j]) {
c[k] = a[i];
k++;
i++;
}
else {
c[k] = a[j];
k++; j++;
}
}
while (i <= mid){
c[k] = a[i];
k++;
i++;
}
while (j <= high){
c[k] = a[j];
k++;
j++;
}
for (i = low; i < k; i++){
a[i] = c[i];
}
Explanation / Answer
.file 1 "" .section .mdebug.abi32 .previous .gnu_attribute 4, 1 .abicalls .globl c .section .bss,"aw",@nobits .align 2 .type c, @object .size c, 400 c: .space 400 .text .align 2 .globl _Z5mergePiiii $LFB0 = . .set nomips16 .ent _Z5mergePiiii .type _Z5mergePiiii, @function _Z5mergePiiii: .frame $fp,32,$31 # vars= 16, regs= 1/0, args= 0, gp= 8 .mask 0x40000000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro addiu $sp,$sp,-32 $LCFI0: sw $fp,28($sp) $LCFI1: move $fp,$sp movz $31,$31,$0 $LCFI2: .cprestore 0 sw $4,32($fp) sw $5,36($fp) sw $6,40($fp) sw $7,44($fp) lw $2,36($fp) nop sw $2,16($fp) lw $2,36($fp) nop sw $2,8($fp) lw $2,44($fp) nop addiu $2,$2,1 sw $2,12($fp) b $L2 nop $L6: lw $2,16($fp) nop sll $2,$2,2 lw $3,32($fp) nop addu $2,$3,$2 lw $3,0($2) lw $2,12($fp) nop sll $2,$2,2 lw $4,32($fp) nop addu $2,$4,$2 lw $2,0($2) nop slt $2,$3,$2 beq $2,$0,$L3 nop lw $2,8($fp) lw $3,16($fp) nop sll $3,$3,2 lw $4,32($fp) nop addu $3,$4,$3 lw $3,0($3) lw $4,%got(c)($28) sll $2,$2,2 addu $2,$4,$2 sw $3,0($2) lw $2,8($fp) nop addiu $2,$2,1 sw $2,8($fp) lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) b $L2 nop $L3: lw $2,8($fp) lw $3,12($fp) nop sll $3,$3,2 lw $4,32($fp) nop addu $3,$4,$3 lw $3,0($3) lw $4,%got(c)($28) sll $2,$2,2 addu $2,$4,$2 sw $3,0($2) lw $2,8($fp) nop addiu $2,$2,1 sw $2,8($fp) lw $2,12($fp) nop addiu $2,$2,1 sw $2,12($fp) $L2: lw $3,16($fp) lw $2,44($fp) nop slt $2,$2,$3 bne $2,$0,$L4 nop lw $3,12($fp) lw $2,40($fp) nop slt $2,$2,$3 bne $2,$0,$L4 nop li $2,1 # 0x1 b $L5 nop $L4: move $2,$0 $L5: bne $2,$0,$L6 nop b $L7 nop $L8: lw $2,8($fp) lw $3,16($fp) nop sll $3,$3,2 lw $4,32($fp) nop addu $3,$4,$3 lw $3,0($3) lw $4,%got(c)($28) sll $2,$2,2 addu $2,$4,$2 sw $3,0($2) lw $2,8($fp) nop addiu $2,$2,1 sw $2,8($fp) lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L7: lw $3,16($fp) lw $2,44($fp) nop slt $2,$2,$3 xori $2,$2,0x1 andi $2,$2,0x00ff bne $2,$0,$L8 nop b $L9 nop $L10: lw $2,8($fp) lw $3,12($fp) nop sll $3,$3,2 lw $4,32($fp) nop addu $3,$4,$3 lw $3,0($3) lw $4,%got(c)($28) sll $2,$2,2 addu $2,$4,$2 sw $3,0($2) lw $2,8($fp) nop addiu $2,$2,1 sw $2,8($fp) lw $2,12($fp) nop addiu $2,$2,1 sw $2,12($fp) $L9: lw $3,12($fp) lw $2,40($fp) nop slt $2,$2,$3 xori $2,$2,0x1 andi $2,$2,0x00ff bne $2,$0,$L10 nop lw $2,36($fp) nop sw $2,16($fp) b $L11 nop $L12: lw $2,16($fp) nop sll $2,$2,2 lw $3,32($fp) nop addu $2,$3,$2 lw $3,16($fp) lw $4,%got(c)($28) sll $3,$3,2 addu $3,$4,$3 lw $3,0($3) nop sw $3,0($2) lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L11: lw $3,16($fp) lw $2,8($fp) nop slt $2,$3,$2 andi $2,$2,0x00ff bne $2,$0,$L12 nop move $sp,$fp lw $fp,28($sp) addiu $sp,$sp,32 j $31 nop .set macro .set reorder .end _Z5mergePiiii $LFE0: .size _Z5mergePiiii, .-_Z5mergePiiii .ident "GCC: (Debian 4.4.5-8) 4.4.5"
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.