Question
The purpose of this assignment is for you to become better at comprehending x86-64 assembly language. We will not write assembly language programs. Instead, in
The purpose of this assignment is for you to become better at comprehending x86-64 assembly language. We will not write assembly language programs. Instead, in this assignment you are given 5 functions in x86-64 assembly language. Your task is to reverse engineer these 5 functions by writing them in C.
f2:
cmpl %edx, %edi
sete %dl
xorl %eax, %eax
cmpl %esi, %edi
sete %al
andl %edx, %eax
ret
f3:
movq %rdi, %rax
notq %rax
shrq $63, %rax
ret
f4:
cmpl $1, %edi
jle .L9
addl $1, %edi
movl $2, %edx
movl $1, %eax
.L8:
imull %edx, %eax
addl $1, %edx
cmpl %edi, %edx
jne .L8
ret
.L9:
movl $1, %eax
ret
f5:
cmpl $1, %esi
jle .L28
movl 4(%rdi), %eax
cmpl %eax, (%rdi)
jg .L30
addq $4, %rdi
subl $1, %esi
xorl %eax, %eax
jmp .L26
.L27:
movl (%rdi), %edx
addq $4, %rdi
cmpl (%rdi), %edx
jg .L30
.L26:
addl $1, %eax
cmpl %esi, %eax
jne .L27
.L28:
movl $1, %eax
ret
.L30:
xorl %eax, %eax
ret
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started