Question: Hello. Please help me converting this P3 Processor-X86-64 gcc 9.2 into P3JS .LC0: .string %d manhantan(int*): push rbp mov rbp, rsp sub rsp, 48 mov
Hello. Please help me converting this P3 Processor-X86-64 gcc 9.2 into P3JS
.LC0: .string "%d" manhantan(int*): push rbp mov rbp, rsp sub rsp, 48 mov QWORD PTR [rbp-40], rdi mov DWORD PTR [rbp-4], -1 mov DWORD PTR [rbp-8], -1 mov DWORD PTR [rbp-12], -1 mov DWORD PTR [rbp-20], -1 mov DWORD PTR [rbp-16], 0 .L4: cmp DWORD PTR [rbp-16], 15 jg .L2 mov eax, DWORD PTR [rbp-16] cdqe lea rdx, [0+rax*4] mov rax, QWORD PTR [rbp-40] add rax, rdx mov eax, DWORD PTR [rax] test eax, eax jne .L3 mov eax, DWORD PTR [rbp-16] mov DWORD PTR [rbp-4], eax jmp .L2 .L3: add DWORD PTR [rbp-16], 1 jmp .L4 .L2: cmp DWORD PTR [rbp-4], 0 js .L5 cmp DWORD PTR [rbp-4], 3 jg .L5 mov DWORD PTR [rbp-12], 4 .L5: cmp DWORD PTR [rbp-4], 3 jle .L6 cmp DWORD PTR [rbp-4], 7 jg .L6 mov DWORD PTR [rbp-12], 3 .L6: cmp DWORD PTR [rbp-4], 7 jle .L7 cmp DWORD PTR [rbp-4], 11 jg .L7 mov DWORD PTR [rbp-12], 2 .L7: cmp DWORD PTR [rbp-4], 11 jle .L8 cmp DWORD PTR [rbp-4], 15 jg .L8 mov DWORD PTR [rbp-12], 1 .L8: cmp DWORD PTR [rbp-4], 0 je .L9 cmp DWORD PTR [rbp-4], 4 je .L9 cmp DWORD PTR [rbp-4], 8 je .L9 cmp DWORD PTR [rbp-4], 12 jne .L10 .L9: mov DWORD PTR [rbp-8], 1 .L10: cmp DWORD PTR [rbp-4], 1 je .L11 cmp DWORD PTR [rbp-4], 5 je .L11 cmp DWORD PTR [rbp-4], 9 je .L11 cmp DWORD PTR [rbp-4], 13 jne .L12 .L11: mov DWORD PTR [rbp-8], 2 .L12: cmp DWORD PTR [rbp-4], 2 je .L13 cmp DWORD PTR [rbp-4], 6 je .L13 cmp DWORD PTR [rbp-4], 10 je .L13 cmp DWORD PTR [rbp-4], 14 jne .L14 .L13: mov DWORD PTR [rbp-8], 3 .L14: cmp DWORD PTR [rbp-4], 3 je .L15 cmp DWORD PTR [rbp-4], 7 je .L15 cmp DWORD PTR [rbp-4], 11 je .L15 cmp DWORD PTR [rbp-4], 15 jne .L16 .L15: mov DWORD PTR [rbp-8], 4 .L16: mov eax, DWORD PTR [rbp-8] lea edx, [rax-4] mov eax, edx sar eax, 31 xor edx, eax sub edx, eax mov eax, DWORD PTR [rbp-12] sub eax, 1 mov ecx, eax sar ecx, 31 xor eax, ecx sub eax, ecx add eax, edx mov DWORD PTR [rbp-20], eax mov eax, DWORD PTR [rbp-20] mov esi, eax mov edi, OFFSET FLAT:.LC0 mov eax, 0 call printf mov eax, DWORD PTR [rbp-20] leave ret main: push rbp mov rbp, rsp sub rsp, 80 mov DWORD PTR [rbp-4], 0 .L20: cmp DWORD PTR [rbp-4], 15 jg .L19 lea rax, [rbp-80] mov edx, DWORD PTR [rbp-4] movsx rdx, edx sal rdx, 2 add rax, rdx mov rsi, rax mov edi, OFFSET FLAT:.LC0 mov eax, 0 call scanf add DWORD PTR [rbp-4], 1 jmp .L20 .L19: lea rax, [rbp-80] mov rdi, rax call manhantan(int*) mov eax, 0 leave ret
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
