Convert to MIPS from C. Make sure it is using this C code, it has pointers. Also
ID: 3801851 • Letter: C
Question
Convert to MIPS from C. Make sure it is using this C code, it has pointers. Also show an output of it working please. Nothing handwritten...
#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 $LFB12 = . .set nomips16 .ent _Z10bubbleSortPii .type _Z10bubbleSortPii, @function _Z10bubbleSortPii: .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 .mask 0x00000000,0 .fmask 0x00000000,0 .set noreorder .set nomacro addiu $5,$5,-1 blez $5,$L12 move $2,$4 $L8: move $8,$0 move $3,$0 $L5: lw $6,0($2) lw $7,4($2) addiu $3,$3,1 slt $10,$6,$7 beq $10,$0,$L4 slt $9,$3,$5 sw $7,0($2) sw $6,4($2) li $8,1 # 0x1 $L4: bne $9,$0,$L5 addiu $2,$2,4 bne $8,$0,$L8 move $2,$4 $L12: j $31 nop .set macro .set reorder .end _Z10bubbleSortPii $LFE12: .size _Z10bubbleSortPii, .-_Z10bubbleSortPii .section .rodata.str1.4,"aMS",@progbits,1 .align 2 $LC0: .ascii "Before Sorting: " .align 2 $LC1: .ascii "%d " .align 2 $LC2: .ascii "After Sorting: " .text .align 2 .globl main $LFB13 = . .set nomips16 .ent main .type main, @function main: .frame $sp,112,$31 # vars= 48, regs= 10/0, args= 16, gp= 8 .mask 0xc0ff0000,-4 .fmask 0x00000000,0 .set noreorder .cpload $25 .set nomacro addiu $sp,$sp,-112 $LCFI0: sw $31,108($sp) $LCFI1: sw $fp,104($sp) movz $31,$31,$0 $LCFI2: sw $23,100($sp) $LCFI3: sw $22,96($sp) $LCFI4: sw $21,92($sp) $LCFI5: sw $20,88($sp) $LCFI6: sw $19,84($sp) $LCFI7: sw $18,80($sp) $LCFI8: sw $17,76($sp) $LCFI9: sw $16,72($sp) $LCFI10: .cprestore 16 lw $2,%got(_ZZ4mainE4C.13)($28) addiu $3,$sp,24 addiu $2,$2,%lo(_ZZ4mainE4C.13) addiu $4,$2,32 $L14: lw $8,0($2) lw $7,4($2) lw $6,8($2) lw $5,12($2) addiu $2,$2,16 sw $8,0($3) sw $7,4($3) sw $6,8($3) sw $5,12($3) bne $2,$4,$L14 addiu $3,$3,16 lw $4,%got($LC0)($28) lw $2,0($2) lw $25,%call16(printf)($28) sw $2,0($3) jalr $25 addiu $4,$4,%lo($LC0) lw $28,16($sp) lw $22,24($sp) lw $fp,%got($LC1)($28) lw $25,%call16(printf)($28) addiu $4,$fp,%lo($LC1) jalr $25 move $5,$22 lw $28,16($sp) lw $21,28($sp) lw $25,%call16(printf)($28) addiu $4,$fp,%lo($LC1) jalr $25 move $5,$21 lw $28,16($sp) lw $20,32($sp) lw $25,%call16(printf)($28) addiu $4,$fp,%lo($LC1) jalr $25 move $5,$20 lw $28,16($sp) lw $19,36($sp) lw $25,%call16(printf)($28) addiu $4,$fp,%lo($LC1) jalr $25 move $5,$19 lw $28,16($sp) lw $18,40($sp) lw $25,%call16(printf)($28) addiu $4,$fp,%lo($LC1) jalr $25 move $5,$18 lw $28,16($sp) lw $17,44($sp) lw $25,%call16(printf)($28) addiu $4,$fp,%lo($LC1) jalr $25 move $5,$17 lw $28,16($sp) lw $16,48($sp) lw $25,%call16(printf)($28) addiu $4,$fp,%lo($LC1) jalr $25 move $5,$16 lw $28,16($sp) lw $3,52($sp) lw $25,%call16(printf)($28) move $5,$3 sw $3,64($sp) jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) lw $23,56($sp) lw $25,%call16(printf)($28) addiu $4,$fp,%lo($LC1) jalr $25 move $5,$23 lw $28,16($sp) nop lw $25,%call16(putchar)($28) nop jalr $25 li $4,10 # 0xa lw $28,16($sp) lw $3,64($sp) b $L43 move $4,$22 $L35: move $22,$4 move $4,$2 slt $5,$4,$21 bne $5,$0,$L19 move $3,$0 $L36: move $4,$21 move $21,$2 move $2,$4 slt $5,$2,$20 bne $5,$0,$L21 nop $L37: move $5,$20 move $2,$5 move $20,$4 slt $4,$2,$19 bne $4,$0,$L23 nop $L38: move $4,$19 move $2,$4 move $19,$5 slt $5,$2,$18 bne $5,$0,$L25 nop $L39: move $5,$18 move $2,$5 move $18,$4 slt $4,$2,$17 bne $4,$0,$L27 nop $L40: move $4,$17 move $2,$4 move $17,$5 slt $5,$2,$16 bne $5,$0,$L29 nop $L41: move $5,$16 move $2,$5 move $16,$4 slt $4,$2,$23 beq $4,$0,$L31 nop $L42: move $3,$23 move $23,$2 move $4,$22 $L43: move $22,$21 move $21,$20 move $20,$19 move $19,$18 move $18,$17 move $17,$16 move $16,$3 $L15: slt $2,$4,$22 beq $2,$0,$L35 move $2,$22 slt $5,$4,$21 move $2,$4 beq $5,$0,$L36 li $3,1 # 0x1 $L19: move $2,$4 slt $5,$2,$20 beq $5,$0,$L37 li $3,1 # 0x1 $L21: slt $4,$2,$19 move $5,$2 beq $4,$0,$L38 li $3,1 # 0x1 $L23: slt $5,$2,$18 move $4,$2 beq $5,$0,$L39 li $3,1 # 0x1 $L25: slt $4,$2,$17 move $5,$2 beq $4,$0,$L40 li $3,1 # 0x1 $L27: slt $5,$2,$16 move $4,$2 beq $5,$0,$L41 li $3,1 # 0x1 $L29: slt $4,$2,$23 move $5,$2 bne $4,$0,$L42 li $3,1 # 0x1 $L31: beq $3,$0,$L16 nop move $4,$22 move $22,$21 move $21,$20 move $20,$19 move $19,$18 move $18,$17 move $17,$16 b $L15 move $16,$5 $L16: lw $4,%got($LC2)($28) lw $25,%call16(printf)($28) sw $22,24($sp) sw $21,28($sp) sw $20,32($sp) sw $19,36($sp) sw $18,40($sp) sw $17,44($sp) sw $16,48($sp) sw $5,52($sp) sw $23,56($sp) jalr $25 addiu $4,$4,%lo($LC2) lw $28,16($sp) lw $5,24($sp) lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) lw $5,28($sp) lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) lw $5,32($sp) lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) lw $5,36($sp) lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) lw $5,40($sp) lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) lw $5,44($sp) lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) lw $5,48($sp) lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) lw $5,52($sp) lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) move $5,$23 lw $25,%call16(printf)($28) nop jalr $25 addiu $4,$fp,%lo($LC1) lw $28,16($sp) nop lw $25,%call16(putchar)($28) nop jalr $25 li $4,10 # 0xa lw $31,108($sp) move $2,$0 lw $fp,104($sp) lw $23,100($sp) lw $22,96($sp) lw $21,92($sp) lw $20,88($sp) lw $19,84($sp) lw $18,80($sp) lw $17,76($sp) lw $16,72($sp) j $31 addiu $sp,$sp,112 .set macro .set reorder .end main $LFE13: .size main, .-main .rdata .align 2 .type _ZZ4mainE4C.13, @object .size _ZZ4mainE4C.13, 36 _ZZ4mainE4C.13: .word 99 .word 88 .word 66 .word 77 .word 44 .word 55 .word 11 .word 33 .word 22 .section .eh_frame,"aw",@progbits