Translate the following C/C++ code into MIPS Assembly Code: void chico(int *X, int Y, int Z) { *X = Y/4 - Z*10 + *X*8; } int main() { int J, K, L, M; cin >> J, K, L; chico ( &J, K, L); M = J - (K + L); cout << M; return 0; } Solution Program: #include using namespace std; void chico(int *X, int Y, int Z) { *X = Y/4 - Z*10 + *X*8; } int main() { int J, K, L, M; cin >> J,K,L; chico ( &J, K, L); M = J - (K + L); cout<<\"value\"<< M; return 0; } The above code returns the following Mips code : chico(int*, int, int): push rbp mov rbp, rsp mov QWORD PTR [rbp-8], rdi mov DWORD PTR [rbp-12], esi mov DWORD PTR [rbp-16], edx mov eax, DWORD PTR [rbp-12] lea edx, [rax+3] test eax, eax cmovs eax, edx sar eax, 2 mov ecx, eax mov edx, DWORD PTR [rbp-16] mov eax, edx sal eax, 2 add eax, edx add eax, eax neg eax lea edx, [rcx+rax] mov rax, QWORD PTR [rbp-8] mov eax, DWORD PTR [rax] sal eax, 3 add edx, eax mov rax, QWORD PTR [rbp-8] mov DWORD PTR [rax], edx nop pop rbp ret .LC0: .string \"value\" main: push rbp mov rbp, rsp sub rsp, 16 lea rax, [rbp-16] mov rsi, rax mov edi, OFFSET FLAT:std::cin call std::basic_istream >::operator>>(int&) mov edx, DWORD PTR [rbp-8] mov ecx, DWORD PTR [rbp-4] lea rax, [rbp-16] mov esi, ecx mov rdi, rax call chico(int*, int, int) mov eax, DWORD PTR [rbp-16] mov ecx, DWORD PTR [rbp-4] mov edx, DWORD PTR [rbp-8] add edx, ecx sub eax, edx mov DWORD PTR [rbp-12], eax mov esi, OFFSET FLAT:.LC0 mov edi, OFFSET FLAT:std::cout call std::basic_ostream >& std::operator<< >(std::basic_ostream >&, char const*) mov rdx, rax mov eax, DWORD PTR [rbp-12] mov esi, eax mov rdi, rdx call std::basic_ostream >::operator<<(int) mov eax, 0 leave 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 .L6 cmp DWORD PTR [rbp-8], 65535 jne .L6 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 .L6: 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 The above includes all the code that is written even for braces represented above..