Need help converting this C bucketsort to MIPS. #include <iostream> #include<std
ID: 3770334 • Letter: N
Question
Need help converting this C bucketsort to MIPS.
#include <iostream>
#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[10];
int num;
array[0] = 38;
array[1] = 5;
array[2] = 43;
array[3] = 100;
array[4] = 2;
array[5] = 1;
array[6] = 56;
array[7] = 89;
array[8] = 75;
array[9] = 43;
num = 10; // Count of numbers to sort
Bucket_Sort(array, num);
return 0;
}
Explanation / Answer
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) .LBB2: 0010 4889E0 movq %rsp, %rax 0013 4889C6 movq %rax, %rsi 0016 8B45C4 movl -60(%rbp), %eax 0019 4898 cltq 001b 4883E801 subq $1, %rax 001f 488945E0 movq %rax, -32(%rbp) 0023 4889C7 movq %rax, %rdi 0026 4883C701 addq $1, %rdi 002a 4989F8 movq %rdi, %r8 002d 41B90000 movl $0, %r9d 0000 0033 4889C7 movq %rax, %rdi 0036 4883C701 addq $1, %rdi 003a 4889FA movq %rdi, %rdx 003d B9000000 movl $0, %ecx 00 0042 4883C001 addq $1, %rax 0046 48C1E002 salq $2, %rax 004a 488D5003 leaq 3(%rax), %rdx 004e B8100000 movl $16, %eax 00 0053 4883E801 subq $1, %rax 0057 4801D0 addq %rdx, %rax 005a BB100000 movl $16, %ebx 00 005f BA000000 movl $0, %edx 00 0064 48F7F3 divq %rbx 0067 486BC010 imulq $16, %rax, %rax 006b 4829C4 subq %rax, %rsp 006e 4889E0 movq %rsp, %rax 0071 4883C003 addq $3, %rax 0075 48C1E802 shrq $2, %rax 0079 48C1E002 salq $2, %rax 007d 488945E8 movq %rax, -24(%rbp) 0081 C745D800 movl $0, -40(%rbp) 000000 0088 EB15 jmp .L2 .L3: 009b 8345D801 addl $1, -40(%rbp) 008a 488B45E8 movq -24(%rbp), %rax 008e 8B55D8 movl -40(%rbp), %edx 0091 4863D2 movslq %edx, %rdx 0094 C7049000 movl $0, (%rax,%rdx,4) 000000 .L2: 009f 8B45D8 movl -40(%rbp), %eax 00a2 3B45C4 cmpl -60(%rbp), %eax 00a5 7CE3 jl .L3 00a7 C745D800 movl $0, -40(%rbp) 000000 00ae EB30 jmp .L4 .L5: 00dc 8345D801 addl $1, -40(%rbp) 00b0 8B45D8 movl -40(%rbp), %eax 00b3 4898 cltq 00b5 488D1485 leaq 0(,%rax,4), %rdx 00000000 00bd 488B45C8 movq -56(%rbp), %rax 00c1 4801D0 addq %rdx, %rax 00c4 8B00 movl (%rax), %eax 00c6 488B55E8 movq -24(%rbp), %rdx 00ca 4863C8 movslq %eax, %rcx 00cd 8B148A movl (%rdx,%rcx,4), %edx 00d0 8D4A01 leal 1(%rdx), %ecx 00d3 488B55E8 movq -24(%rbp), %rdx 00d7 4898 cltq 00d9 890C82 movl %ecx, (%rdx,%rax,4) .L4: 00e0 8B45D8 movl -40(%rbp), %eax 00e3 3B45C4 cmpl -60(%rbp), %eax 00e6 7CC8 jl .L5 00e8 C745D800 movl $0, -40(%rbp) 000000 00ef C745DC00 movl $0, -36(%rbp) 000000 00f6 EB53 jmp .L6 .L9: 00f8 EB3C jmp .L7 .L8: 0119 488B45E8 movq -24(%rbp), %rax 011d 8B55D8 movl -40(%rbp), %edx 0120 4863D2 movslq %edx, %rdx 0123 8B0490 movl (%rax,%rdx,4), %eax 0126 8D48FF leal -1(%rax), %ecx 0129 488B45E8 movq -24(%rbp), %rax 012d 8B55D8 movl -40(%rbp), %edx 0130 4863D2 movslq %edx, %rdx 0133 890C90 movl %ecx, (%rax,%rdx,4) 00fa 8B45DC movl -36(%rbp), %eax 00fd 8D5001 leal 1(%rax), %edx 0100 8955DC movl %edx, -36(%rbp) 0103 4898 cltq 0105 488D1485 leaq 0(,%rax,4), %rdx 00000000 010d 488B45C8 movq -56(%rbp), %rax 0111 4801C2 addq %rax, %rdx 0114 8B45D8 movl -40(%rbp), %eax 0117 8902 movl %eax, (%rdx) .L7: 0147 8345D801 addl $1, -40(%rbp) 0136 488B45E8 movq -24(%rbp), %rax 013a 8B55D8 movl -40(%rbp), %edx 013d 4863D2 movslq %edx, %rdx 0140 8B0490 movl (%rax,%rdx,4), %eax 0143 85C0 testl %eax, %eax 0145 7FB3 jg .L8 .L6: 014b 8B45D8 movl -40(%rbp), %eax 014e 3B45C4 cmpl -60(%rbp), %eax 0151 7CA5 jl .L9 0153 4889F4 movq %rsi, %rsp .LBE2: 0156 488B5DF8 movq -8(%rbp), %rbx 015a C9 leave .cfi_def_cfa 7, 8 015b C3 ret .cfi_endproc .LFE971: .globl main main: .LFB972: .cfi_startproc 015c 55 pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 015d 4889E5 movq %rsp, %rbp .cfi_def_cfa_register 6 0160 4883EC40 subq $64, %rsp .LBB3: 0164 C745D026 movl $38, -48(%rbp) 000000 016b C745D405 movl $5, -44(%rbp) 000000 0172 C745D82B movl $43, -40(%rbp) 000000 0179 C745DC64 movl $100, -36(%rbp) 000000 0180 C745E002 movl $2, -32(%rbp) 000000 0187 C745E401 movl $1, -28(%rbp) 000000 018e C745E838 movl $56, -24(%rbp) 000000 0195 C745EC59 movl $89, -20(%rbp) 000000 019c C745F04B movl $75, -16(%rbp) 000000 01a3 C745F42B movl $43, -12(%rbp) 000000 01aa C745CC0A movl $10, -52(%rbp) 000000 01b1 8B55CC movl -52(%rbp), %edx 01b4 488D45D0 leaq -48(%rbp), %rax 01b8 89D6 movl %edx, %esi 01ba 4889C7 movq %rax, %rdi 01bd E8000000 call _Z11Bucket_SortPii 00 01c2 B8000000 movl $0, %eax 00 .LBE3: 01c7 C9 leave .cfi_def_cfa 7, 8 01c8 C3 ret .cfi_endproc .LFE972: _Z41__static_initialization_and_destruction_0ii: .LFB973: 01e6 BF000000 movl $_ZStL8__ioinit, %edi 00 01eb E8000000 call _ZNSt8ios_base4InitC1Ev 00 01f0 BA000000 movl $__dso_handle, %edx 00 01f5 BE000000 movl $_ZStL8__ioinit, %esi 00 01fa BF000000 movl $_ZNSt8ios_base4InitD1Ev, %edi 00 01ff E8000000 call __cxa_atexit 00 .cfi_startproc 01c9 55 pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 01ca 4889E5 movq %rsp, %rbp .cfi_def_cfa_register 6 01cd 4883EC10 subq $16, %rsp 01d1 897DFC movl %edi, -4(%rbp) 01d4 8975F8 movl %esi, -8(%rbp) 01d7 837DFC01 cmpl $1, -4(%rbp) 01db 7527 jne .L12 01dd 817DF8FF cmpl $65535, -8(%rbp) FF0000 01e4 751E jne .L12 .L12: 0204 C9 leave .cfi_def_cfa 7, 8 0205 C3 ret .cfi_endproc .LFE973: _GLOBAL__sub_I__Z11Bucket_SortPii: .LFB974: .cfi_startproc 0206 55 pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 0207 4889E5 movq %rsp, %rbp .cfi_def_cfa_register 6 020a BEFFFF00 movl $65535, %esi 00 020f BF010000 movl $1, %edi 00 0214 E8B0FFFF call _Z41__static_initialization_and_destruction_0ii FF 0219 5D popq %rbp .cfi_def_cfa 7, 8 021a C3 ret .cfi_endproc .LFE974: .section .init_array,"aw" .align 8 0000 00000000 .quad _GLOBAL__sub_I__Z11Bucket_SortPii 00000000
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.