In this lab you are expected to compare the source code and

In this lab, you are expected to compare the source code and assembly code for the following C code. (you can get the assembly code with usually –s flag). Can you see any optimizations that can be done on the assembly code?

int a=1, b=2, c=3;

int proc1 (int a, int b, int c)

{ If (a>0)

return b – c;

else return b + c; }

int main()

{ int w, x, y;

w = proc1 (a, b, c);

switch (w) {

case 0: x=3; break;

case 1: x=4; break;

case 2: x=7; break;

default: x=9; break; }

y= w + x;

return 0; }

- Please include your (well- commented) assembly code and your explanation of what this program does and how assembly code can be optimized.

- Include your test results with several screenshots.

Solution

Answer:

MIPS Assembly Language Code:

L0:
push rbp
mov rbp, rsp
mov DWORD PTR [rbp-4], edi
mov DWORD PTR [rbp-8], esi
mov DWORD PTR [rbp-12], edx
cmp DWORD PTR [rbp-4], 0
jle .L2
mov eax, DWORD PTR [rbp-8]
sub eax, DWORD PTR [rbp-12]
jmp .L3
.L2:
mov edx, DWORD PTR [rbp-8]
mov eax, DWORD PTR [rbp-12]
add eax, edx
.L3:
pop rbp
ret
main:
push rbp
mov rbp, rsp
sub rsp, 32
mov DWORD PTR [rbp-8], 1
mov DWORD PTR [rbp-12], 2
mov DWORD PTR [rbp-16], 3
mov edx, DWORD PTR [rbp-16]
mov ecx, DWORD PTR [rbp-12]
mov eax, DWORD PTR [rbp-8]
mov esi, ecx
mov edi, eax
call L0
mov DWORD PTR [rbp-20], eax
mov eax, DWORD PTR [rbp-20]
cmp eax, 1
je .L6
cmp eax, 2
je .L7
test eax, eax
jne .L11
mov DWORD PTR [rbp-4], 3
jmp .L9
.L6:
mov DWORD PTR [rbp-4], 4
jmp .L9
.L7:
mov DWORD PTR [rbp-4], 7
jmp .L9
.L11:
mov DWORD PTR [rbp-4], 9
nop
.L9:
mov edx, DWORD PTR [rbp-20]
mov eax, DWORD PTR [rbp-4]
add eax, edx
mov DWORD PTR [rbp-24], eax
mov eax, 0
leave
ret

In this lab, you are expected to compare the source code and assembly code for the following C code. (you can get the assembly code with usually –s flag). Can y
In this lab, you are expected to compare the source code and assembly code for the following C code. (you can get the assembly code with usually –s flag). Can y

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site