Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

The purpose of this assignment is for you to become better at comprehending x86-64 assembly language. You will not write assembly language code in this

The purpose of this assignment is for you to become better at comprehending x86-64 assembly language. You will not write assembly language code in this assignment. Instead you are given 5 functions in the x86-64 assembly language. Your task is to reverse engineer these functions by writing them in C. Each correct C function is worth 2 points. Your C code does not have to compile into exactly the same assembly language 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.

.file "hw4.c"

.text

.p2align 4,,15

.globl p1

.type p1, @function

p1:

.LFB14:

.cfi_startproc

movl (%rdi), %eax

addl (%rsi), %eax

ret

.cfi_endproc

.LFE14:

.size p1, .-p1

.p2align 4,,15

.globl p2

.type p2, @function

p2:

.LFB15:

.cfi_startproc

movl %esi, %ecx

movl $1, %eax

orl %edx, %ecx

testl %edi, %ecx

jne .L3

xorl %eax, %eax

testl %edx, %esi

setne %al

.L3:

rep ret

.cfi_endproc

.LFE15:

.size p2, .-p2

.p2align 4,,15

.globl p3

.type p3, @function

p3:

.LFB16:

.cfi_startproc

leal -97(%rdi), %edx

movl $1, %eax

cmpb $25, %dl

jbe .L7

cmpb $65, %dil

je .L7

subl $48, %edi

xorl %eax, %eax

cmpb $9, %dil

setbe %al

.L7:

rep ret

.cfi_endproc

.LFE16:

.size p3, .-p3

.p2align 4,,15

.globl p4

.type p4, @function

p4:

.LFB17:

.cfi_startproc

movsbl (%rdi), %eax

movsbl (%rsi), %ecx

testb %al, %al

je .L20

testb %cl, %cl

je .L12

subl %ecx, %eax

jne .L14

movl $1, %edx

.p2align 4,,2

jmp .L15

.p2align 4,,10

.p2align 3

.L16:

testb %cl, %cl

je .L12

addq $1, %rdx

subl %ecx, %eax

jne .L14

.L15:

movsbl (%rdi,%rdx), %eax

movsbl (%rsi,%rdx), %ecx

testb %al, %al

jne .L16

.L20:

xorl %eax, %eax

.L12:

subl %ecx, %eax

.L14:

rep ret

.cfi_endproc

.LFE17:

.size p4, .-p4

.p2align 4,,15

.globl p5

.type p5, @function

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

.LFE18:

.size p5, .-p5

.ident "GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-28)"

.section .note.GNU-stack,"",@progbits

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Making Databases Work The Pragmatic Wisdom Of Michael Stonebraker

Authors: Michael L. Brodie

1st Edition

1947487167, 978-1947487161

More Books

Students also viewed these Databases questions

Question

What is a mortgage note?

Answered: 1 week ago

Question

Evaluate the impact of unions on nurses and physicians.

Answered: 1 week ago

Question

=+Do you want to work from home?

Answered: 1 week ago

Question

=+ What skills and competencies will enable someone

Answered: 1 week ago

Question

=+to live and work wherever he or she wants?

Answered: 1 week ago