Convert the following program procedure Into MIPS Instructio
Solution
Answer:
MIPS Assembly Language Code :
.zero 1
 main:
 push rbp
 mov rbp, rsp
 sub rsp, 32
 mov DWORD PTR [rbp-4], 16
 mov DWORD PTR [rbp-8], 32
 mov DWORD PTR [rbp-12], 64
 mov DWORD PTR [rbp-16], 0
 mov DWORD PTR [rbp-20], 0
 mov edx, DWORD PTR [rbp-8]
 mov eax, DWORD PTR [rbp-4]
 mov esi, edx
 mov edi, eax
 call average(int, int)
 mov DWORD PTR [rbp-16], eax
 mov edx, DWORD PTR [rbp-12]
 mov eax, DWORD PTR [rbp-8]
 mov esi, edx
 mov edi, eax
 call sum(int, int)
 mov DWORD PTR [rbp-20], eax
 mov eax, 0
 leave
 ret
 sum(int, int):
 push rbp
 mov rbp, rsp
 mov DWORD PTR [rbp-4], edi
 mov DWORD PTR [rbp-8], esi
 mov edx, DWORD PTR [rbp-4]
 mov eax, DWORD PTR [rbp-8]
 add eax, edx
 pop rbp
 ret
 average(int, int):
 push rbp
 mov rbp, rsp
 mov DWORD PTR [rbp-20], edi
 mov DWORD PTR [rbp-24], esi
 mov edx, DWORD PTR [rbp-20]
 mov eax, DWORD PTR [rbp-24]
 add eax, edx
 mov DWORD PTR [rbp-4], eax
 mov eax, DWORD PTR [rbp-4]
 mov edx, eax
 shr edx, 31
 add eax, edx
 sar eax
 pop rbp
 ret
 __static_initialization_and_destruction_0(int, int):
 push rbp
 mov rbp, rsp
 sub rsp, 16
 mov DWORD PTR [rbp-4], edi
 mov DWORD PTR [rbp-8], esi
 cmp DWORD PTR [rbp-4], 1
 jne .L9
 cmp DWORD PTR [rbp-8], 65535
 jne .L9
 mov edi, OFFSET FLAT:std::__ioinit
 call std::ios_base::Init::Init()
 mov edx, OFFSET FLAT:__dso_handle
 mov esi, OFFSET FLAT:std::__ioinit
 mov edi, OFFSET FLAT:std::ios_base::Init::~Init()
 call __cxa_atexit
 .L9:
 nop
 leave
 ret
 push rbp
 mov rbp, rsp
 mov esi, 65535
 mov edi, 1
 call __static_initialization_and_destruction_0(int, int)
 pop rbp
 ret


