Please help! I\'m struggling to translate this code to MIPS! Thank you #include<
ID: 3770282 • Letter: P
Question
Please help! I'm struggling to translate this code to MIPS! Thank you
#include<stdio.h>
void Bucket_Sort(int array[], int n)
{
int i, j;
int count[n];
for(i=0; i < n; i++)
{
count[i] = 0;
}
for(i=0; i < n; i++)
{
(count[array[i]])++;
}
for(i=0,j=0; i < n; i++)
{
for(; count[i]>0;(count[i])--)
{
array[j++] = i;
}
}
}
int main()
{
int array[100];
int num;
int i;
printf("Enter How many Numbers : ");
scanf("%d",&num);
printf("Enter the %d elements to be sorted: ",num);
for(i = 0; i < num; i++ )
{
scanf("%d",&array[i]);
}
printf(" The array of elements before sorting : ");
for (i = 0;i < num;i++)
{
printf("%d ", array[i]);
}
printf(" The array of elements after sorting : ");
Bucket_Sort(array, num);
for (i = 0;i < num;i++)
{
printf("%d ", array[i]);
}
printf(" ");
return 0;
}
Explanation / Answer
.Ltext0: .globl Bucket_Sort Bucket_Sort: .LFB0: .cfi_startproc 0000 55 pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 0001 4889E5 movq %rsp, %rbp .cfi_def_cfa_register 6 0004 53 pushq %rbx 0005 4883EC38 subq $56, %rsp .cfi_offset 3, -24 0009 48897DC8 movq %rdi, -56(%rbp) 000d 8975C4 movl %esi, -60(%rbp) 0010 4889E0 movq %rsp, %rax 0013 4889C6 movq %rax, %rsi 0016 8B45C4 movl -60(%rbp), %eax 0019 4863F8 movslq %eax, %rdi 001c 4883EF01 subq $1, %rdi 0020 48897DE0 movq %rdi, -32(%rbp) 0024 4863F8 movslq %eax, %rdi 0027 4989F8 movq %rdi, %r8 002a 41B90000 movl $0, %r9d 0000 0030 4863F8 movslq %eax, %rdi 0033 4889FA movq %rdi, %rdx 0036 B9000000 movl $0, %ecx 00 003b 4898 cltq 003d 48C1E002 salq $2, %rax 0041 488D5003 leaq 3(%rax), %rdx 0045 B8100000 movl $16, %eax 00 004a 4883E801 subq $1, %rax 004e 4801D0 addq %rdx, %rax 0051 BB100000 movl $16, %ebx 00 0056 BA000000 movl $0, %edx 00 005b 48F7F3 divq %rbx 005e 486BC010 imulq $16, %rax, %rax 0062 4829C4 subq %rax, %rsp 0065 4889E0 movq %rsp, %rax 0068 4883C003 addq $3, %rax 006c 48C1E802 shrq $2, %rax 0070 48C1E002 salq $2, %rax 0074 488945E8 movq %rax, -24(%rbp) 0078 C745D800 movl $0, -40(%rbp) 000000 007f EB15 jmp .L2 .L3: 0092 8345D801 addl $1, -40(%rbp) 0081 488B45E8 movq -24(%rbp), %rax 0085 8B55D8 movl -40(%rbp), %edx 0088 4863D2 movslq %edx, %rdx 008b C7049000 movl $0, (%rax,%rdx,4) 000000 .L2: 0096 8B45D8 movl -40(%rbp), %eax 0099 3B45C4 cmpl -60(%rbp), %eax 009c 7CE3 jl .L3 009e C745D800 movl $0, -40(%rbp) 000000 00a5 EB30 jmp .L4 .L5: 00d3 8345D801 addl $1, -40(%rbp) 00a7 8B45D8 movl -40(%rbp), %eax 00aa 4898 cltq 00ac 488D1485 leaq 0(,%rax,4), %rdx 00000000 00b4 488B45C8 movq -56(%rbp), %rax 00b8 4801D0 addq %rdx, %rax 00bb 8B00 movl (%rax), %eax 00bd 488B55E8 movq -24(%rbp), %rdx 00c1 4863C8 movslq %eax, %rcx 00c4 8B148A movl (%rdx,%rcx,4), %edx 00c7 8D4A01 leal 1(%rdx), %ecx 00ca 488B55E8 movq -24(%rbp), %rdx 00ce 4898 cltq 00d0 890C82 movl %ecx, (%rdx,%rax,4) .L4: 00d7 8B45D8 movl -40(%rbp), %eax 00da 3B45C4 cmpl -60(%rbp), %eax 00dd 7CC8 jl .L5 00df C745D800 movl $0, -40(%rbp) 000000 00e6 C745DC00 movl $0, -36(%rbp) 000000 00ed EB53 jmp .L6 .L9: 00ef EB3C jmp .L7 .L8: 0110 488B45E8 movq -24(%rbp), %rax 0114 8B55D8 movl -40(%rbp), %edx 0117 4863D2 movslq %edx, %rdx 011a 8B0490 movl (%rax,%rdx,4), %eax 011d 8D48FF leal -1(%rax), %ecx 0120 488B45E8 movq -24(%rbp), %rax 0124 8B55D8 movl -40(%rbp), %edx 0127 4863D2 movslq %edx, %rdx 012a 890C90 movl %ecx, (%rax,%rdx,4) 00f1 8B45DC movl -36(%rbp), %eax 00f4 8D5001 leal 1(%rax), %edx 00f7 8955DC movl %edx, -36(%rbp) 00fa 4898 cltq 00fc 488D1485 leaq 0(,%rax,4), %rdx 00000000 0104 488B45C8 movq -56(%rbp), %rax 0108 4801C2 addq %rax, %rdx 010b 8B45D8 movl -40(%rbp), %eax 010e 8902 movl %eax, (%rdx) .L7: 013e 8345D801 addl $1, -40(%rbp) 012d 488B45E8 movq -24(%rbp), %rax 0131 8B55D8 movl -40(%rbp), %edx 0134 4863D2 movslq %edx, %rdx 0137 8B0490 movl (%rax,%rdx,4), %eax 013a 85C0 testl %eax, %eax 013c 7FB3 jg .L8 .L6: 0142 8B45D8 movl -40(%rbp), %eax 0145 3B45C4 cmpl -60(%rbp), %eax 0148 7CA5 jl .L9 014a 4889F4 movq %rsi, %rsp 014d 488B5DF8 movq -8(%rbp), %rbx 0151 C9 leave .cfi_def_cfa 7, 8 0152 C3 ret .cfi_endproc .LFE0: .section .rodata .LC0: 0000 456E7465 .string "Enter How many Numbers : " 7220486F 77206D61 6E79204E 756D6265 .LC1: 001a 256400 .string "%d" 001d 000000 .align 8 .LC2: 0020 456E7465 .string "Enter the %d elements to be sorted: " 72207468 65202564 20656C65 6D656E74 0045 000000 .align 8 .LC3: 0048 0A546865 .string " The array of elements before sorting : " 20617272 6179206F 6620656C 656D656E .LC4: 0071 25642000 .string "%d " 0075 000000 .align 8 .LC5: 0078 0A546865 .string " The array of elements after sorting : " 20617272 6179206F 6620656C 656D656E .text .globl main main: .LFB1: .cfi_startproc 0153 55 pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 0154 4889E5 movq %rsp, %rbp .cfi_def_cfa_register 6 0157 4881ECA0 subq $416, %rsp 010000 015e BF000000 movl $.LC0, %edi 00 0163 B8000000 movl $0, %eax 00 0168 E8000000 call printf 00 016d 488D8568 leaq -408(%rbp), %rax FEFFFF 0174 4889C6 movq %rax, %rsi 0177 BF000000 movl $.LC1, %edi 00 017c B8000000 movl $0, %eax 00 0181 E8000000 call __isoc99_scanf 00 0186 8B8568FE movl -408(%rbp), %eax FFFF 018c 89C6 movl %eax, %esi 018e BF000000 movl $.LC2, %edi 00 0193 B8000000 movl $0, %eax 00 0198 E8000000 call printf 00 019d C7856CFE movl $0, -404(%rbp) FFFF0000 0000 01a7 EB30 jmp .L11 .L12: 01d2 83856CFE addl $1, -404(%rbp) FFFF01 01a9 488D8570 leaq -400(%rbp), %rax FEFFFF 01b0 8B956CFE movl -404(%rbp), %edx FFFF 01b6 4863D2 movslq %edx, %rdx 01b9 48C1E202 salq $2, %rdx 01bd 4801D0 addq %rdx, %rax 01c0 4889C6 movq %rax, %rsi 01c3 BF000000 movl $.LC1, %edi 00 01c8 B8000000 movl $0, %eax 00 01cd E8000000 call __isoc99_scanf 00 .L11: 01d9 8B8568FE movl -408(%rbp), %eax FFFF 01df 39856CFE cmpl %eax, -404(%rbp) FFFF 01e5 7CC2 jl .L12 01e7 BF000000 movl $.LC3, %edi 00 01ec E8000000 call puts 00 01f1 C7856CFE movl $0, -404(%rbp) FFFF0000 0000 01fb EB27 jmp .L13 .L14: 021d 83856CFE addl $1, -404(%rbp) FFFF01 01fd 8B856CFE movl -404(%rbp), %eax FFFF 0203 4898 cltq 0205 8B848570 movl -400(%rbp,%rax,4), %eax FEFFFF 020c 89C6 movl %eax, %esi 020e BF000000 movl $.LC4, %edi 00 0213 B8000000 movl $0, %eax 00 0218 E8000000 call printf 00 .L13: 0224 8B8568FE movl -408(%rbp), %eax FFFF 022a 39856CFE cmpl %eax, -404(%rbp) FFFF 0230 7CCB jl .L14 0232 BF000000 movl $.LC5, %edi 00 0237 E8000000 call puts 00 023c 8B9568FE movl -408(%rbp), %edx FFFF 0242 488D8570 leaq -400(%rbp), %rax FEFFFF 0249 89D6 movl %edx, %esi 024b 4889C7 movq %rax, %rdi 024e E8000000 call Bucket_Sort 00 0253 C7856CFE movl $0, -404(%rbp) FFFF0000 0000 025d EB27 jmp .L15 .L16: 027f 83856CFE addl $1, -404(%rbp) FFFF01 025f 8B856CFE movl -404(%rbp), %eax FFFF 0265 4898 cltq 0267 8B848570 movl -400(%rbp,%rax,4), %eax FEFFFF 026e 89C6 movl %eax, %esi 0270 BF000000 movl $.LC4, %edi 00 0275 B8000000 movl $0, %eax 00 027a E8000000 call printf 00 .L15: 0286 8B8568FE movl -408(%rbp), %eax FFFF 028c 39856CFE cmpl %eax, -404(%rbp) FFFF 0292 7CCB jl .L16 0294 BF0A0000 movl $10, %edi 00 0299 E8000000 call putchar 00 029e B8000000 movl $0, %eax 00 02a3 C9 leave .cfi_def_cfa 7, 8 02a4 C3 ret .cfi_endproc .LFE1: .Letext0: