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. Each correct answer is worth 1 point.
Your C code does not have to compile into exactly the same .s code that I have given you. Rather, you will be graded on whether or not your C functions properly emulate the assembly language; that is, they both should return the same value provided they are passed the same values as parameters.
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