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.
p5:
.LFB18:
.cfi_startproc
subl $1, %esi
testl %esi, %esi
jle .L21
movslq %esi, %rax
xorl %edx, %edx
leaq (%rdi,%rax,4), %rax
.p2align 4,,10
.p2align 3
.L24:
movl (%rdi), %ecx
movl (%rax), %r8d
addl $1, %edx
subl $1, %esi
addq $4, %rdi
subq $4, %rax
movl %r8d, -4(%rdi)
movl %ecx, 4(%rax)
cmpl %esi, %edx
jl .L24
.L21:
rep ret
.cfi_endproc
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