[MIPS] Please rewrite the C code below into MIPS. Any online converter cannot be
ID: 3805127 • Letter: #
Question
[MIPS] Please rewrite the C code below into MIPS. Any online converter cannot be accepted, please provide screen shots of the output
#include <stdio.h>
void bubbleSort(int *num, int size)
{
int j;
int flag = 1; //set flag to true to begin first pass.
int temp; //holding variable.
while(flag)
{
flag = 0; //set flag to false awaiting a possible swap.
for(j = 0; j < size-1; j++)
{
if(*(num+j) < *(num+j+1)) //change to > for ascending sort
{
temp = *(num+j); //swap elements.
*(num+j) = *(num+j+1);
*(num+j+1) = temp;
flag = 1; //shows a swap occurred.
}
}
}
}
int main()
{
int array[] = {99, 88, 66, 77, 44, 55, 11, 33, 22};
printf("Before Sorting: ");
for(int i = 0; i < 9; i++)
printf("%d ", array[i]);
printf(" ");
bubbleSort(array, 9);
printf("After Sorting: ");
for(int i = 0; i < 9; i++)
printf("%d ", array[i]);
printf(" ");
}
Explanation / Answer
.file 1 "" .section .mdebug.abi32 .previous .gnu_attribute 4, 1 .abicalls .text .align 2 .globl _Z10bubbleSortPii $LFB0 = . .set nomips16 .ent _Z10bubbleSortPii .type _Z10bubbleSortPii, @function _Z10bubbleSortPii: .frame $fp,32,$31 # vars= 16, regs= 1/0, args= 0, gp= 8 .mask 0x40000000,-4 .fmask 0x00000000,0 .set noreorder .set nomacro addiu $sp,$sp,-32 $LCFI0: sw $fp,28($sp) $LCFI1: move $fp,$sp movz $31,$31,$0 $LCFI2: sw $4,32($fp) sw $5,36($fp) li $2,1 # 0x1 sw $2,12($fp) b $L2 nop $L6: sw $0,12($fp) sw $0,16($fp) b $L3 nop $L5: lw $2,16($fp) nop sll $2,$2,2 lw $3,32($fp) nop addu $2,$3,$2 lw $3,0($2) lw $2,16($fp) nop addiu $2,$2,1 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,$L4 nop lw $2,16($fp) nop sll $2,$2,2 lw $3,32($fp) nop addu $2,$3,$2 lw $2,0($2) nop sw $2,8($fp) lw $2,16($fp) nop sll $2,$2,2 lw $3,32($fp) nop addu $2,$3,$2 lw $3,16($fp) nop addiu $3,$3,1 sll $3,$3,2 lw $4,32($fp) nop addu $3,$4,$3 lw $3,0($3) nop sw $3,0($2) lw $2,16($fp) nop addiu $2,$2,1 sll $2,$2,2 lw $3,32($fp) nop addu $2,$3,$2 lw $3,8($fp) nop sw $3,0($2) li $2,1 # 0x1 sw $2,12($fp) $L4: lw $2,16($fp) nop addiu $2,$2,1 sw $2,16($fp) $L3: lw $2,36($fp) nop addiu $3,$2,-1 lw $2,16($fp) nop slt $2,$2,$3 andi $2,$2,0x00ff bne $2,$0,$L5 nop $L2: lw $2,12($fp) nop sltu $2,$0,$2 andi $2,$2,0x00ff bne $2,$0,$L6 nop move $sp,$fp lw $fp,28($sp) addiu $sp,$sp,32 j $31 nop .set macro .set reorder .end _Z10bubbleSortPii $LFE0: .size _Z10bubbleSortPii, .-_Z10bubbleSortPii .rdata .align 2 $LC0: .ascii "Before Sorting: " .align 2 $LC1: .ascii "%d " .align 2 $LC2: .ascii "After Sorting: " .text .align 2 .globl main $LFB1 = . .set nomips16 .ent main .type main, @function main: .frame $fp,80,$31 # vars= 48, regs= 2/0, args= 16, gp= 8 .mask 0xc0000000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro addiu $sp,$sp,-80 $LCFI3: sw $31,76($sp) $LCFI4: sw $fp,72($sp) movz $31,$31,$0 $LCFI5: move $fp,$sp $LCFI6: .cprestore 16 lw $2,%got(_ZZ4mainE3C.6)($28) addiu $4,$fp,32 addiu $3,$2,%lo(_ZZ4mainE3C.6) li $2,36 # 0x24 move $5,$3 move $6,$2 lw $2,%call16(memcpy)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) nop lw $2,%got($LC0)($28) nop addiu $4,$2,%lo($LC0) lw $2,%call16(printf)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) sw $0,28($fp) b $L9 nop $L10: lw $2,28($fp) nop sll $2,$2,2 addiu $3,$fp,24 addu $2,$3,$2 lw $2,8($2) lw $3,%got($LC1)($28) nop addiu $4,$3,%lo($LC1) move $5,$2 lw $2,%call16(printf)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) lw $2,28($fp) nop addiu $2,$2,1 sw $2,28($fp) $L9: lw $2,28($fp) nop slt $2,$2,9 andi $2,$2,0x00ff bne $2,$0,$L10 nop li $4,10 # 0xa lw $2,%call16(putchar)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) addiu $2,$fp,32 move $4,$2 li $5,9 # 0x9 lw $2,%got(_Z10bubbleSortPii)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) nop lw $2,%got($LC2)($28) nop addiu $4,$2,%lo($LC2) lw $2,%call16(printf)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) sw $0,24($fp) b $L11 nop $L12: lw $2,24($fp) nop sll $2,$2,2 addiu $3,$fp,24 addu $2,$3,$2 lw $2,8($2) lw $3,%got($LC1)($28) nop addiu $4,$3,%lo($LC1) move $5,$2 lw $2,%call16(printf)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) lw $2,24($fp) nop addiu $2,$2,1 sw $2,24($fp) $L11: lw $2,24($fp) nop slt $2,$2,9 andi $2,$2,0x00ff bne $2,$0,$L12 nop li $4,10 # 0xa lw $2,%call16(putchar)($28) nop move $25,$2 jalr $25 nop lw $28,16($fp) move $2,$0 move $sp,$fp lw $31,76($sp) lw $fp,72($sp) addiu $sp,$sp,80 j $31 nop .set macro .set reorder .end main $LFE1: .size main, .-main .rdata .align 2 .type _ZZ4mainE3C.6, @object .size _ZZ4mainE3C.6, 36 _ZZ4mainE3C.6: .word 99 .word 88 .word 66 .word 77 .word 44 .word 55 .word 11 .word 33 .word 22 .section .eh_frame,"aw",@progbits $Lframe1: .4byte $LECIE1-$LSCIE1 $LSCIE1: .4byte 0x0 .byte 0x1 .globl __gxx_personality_v0 .ascii "zP " .uleb128 0x1 .sleb128 -4 .byte 0x1f .uleb128 0x5 .byte 0x0 .4byte __gxx_personality_v0 .byte 0xc .uleb128 0x1d .uleb128 0x0 .align 2 $LECIE1: $LSFDE3: .4byte $LEFDE3-$LASFDE3 $LASFDE3: .4byte $LASFDE3-$Lframe1 .4byte $LFB1 .4byte $LFE1-$LFB1 .uleb128 0x0 .byte 0x4 .4byte $LCFI3-$LFB1 .byte 0xe .uleb128 0x50 .byte 0x4 .4byte $LCFI5-$LCFI3 .byte 0x11 .uleb128 0x1e .sleb128 2 .byte 0x11 .uleb128 0x1f .sleb128 1 .byte 0x4 .4byte $LCFI6-$LCFI5 .byte 0xd .uleb128 0x1e .align 2 $LEFDE3: .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.