Convert the following pseudocode into an ARMAssembly LEGv8 c

Convert the following pseudo-code into an ARM-Assembly (LEGv8) code block If you need to use any register, mention the purpose as a comment. a = 3 b = 5 sum = 0 a = b * 8 if a/2 ! = b * 4 sum = a + b else sum = a - b

Solution

Answer:

Assembly Language Code :

.zero 1
main:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], 3
mov DWORD PTR [rbp-8], 5
mov DWORD PTR [rbp-12], 0
mov eax, DWORD PTR [rbp-8]
sal eax, 3
mov DWORD PTR [rbp-4], eax
mov eax, DWORD PTR [rbp-4]
mov edx, eax
shr edx, 31
add eax, edx
sar eax
mov edx, eax
mov eax, DWORD PTR [rbp-8]
sal eax, 2
cmp edx, eax
je .L2
mov edx, DWORD PTR [rbp-4]
mov eax, DWORD PTR [rbp-8]
add eax, edx
mov DWORD PTR [rbp-12], eax
jmp .L3
.L2:
mov eax, DWORD PTR [rbp-4]
sub eax, DWORD PTR [rbp-8]
mov DWORD PTR [rbp-12], eax
.L3:
mov eax, 0
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 .L7
cmp DWORD PTR [rbp-8], 65535
jne .L7
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
.L7:
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

 Convert the following pseudo-code into an ARM-Assembly (LEGv8) code block If you need to use any register, mention the purpose as a comment. a = 3 b = 5 sum =

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site