Question
#include #include // Problem 1 // Problem 2 long decode2 (long x, long y, long z) { // implement this return 2; // replace this
#include
// Problem 1
// Problem 2 long decode2 (long x, long y, long z) { // implement this return 2; // replace this with appropriate return statement }
// Problem 3 void fun(long x, long y, long z){
}
int main(){
return 0; }
Here is the problem
1. Compile the file sum.c, which is in the hw3 folder, using the following command. gcc -Og -c sum.c Next, dis-assemble the object file created using objdump: objdump -d sum.o Study the generated assembly and find out what registers are used to store variables i and s of the code in sum.c. Explain your reasoning. Write your answer as a comment in hw3.c. 2. For a function with prototype
long decode2(long x, long y, long z);
gcc generates the following assembly code:
decode2: movq %rdi, %rax subq %rdx, %rax movq %rax, %rdx imulq %rax, %rdi salq $63, %rdx sarq $63, %rdx xorq %rdx, %rdi leaq (%rdi,%rsi), %rax ret
Parameters x, y, and z are passed in registers %rdi, %rsi, and %rdx. The code stores the return value in register %rax. Reverse-engineer decode2. (In other words, write C code for decode2 that will have an effect equivalent to the assembly code shown.) Note: read Section 3.5 first and write your solution in hw3.c. To check your solution, compile hw3.c to assembly code using
$ gcc -Og -S hw3.c
and then view the file hw3.s:
$ cat hw3.s
3. Consider the following assembly code:
movq (%rsi), %rax movq (%rdx), %rcx movq %rcx, (%rsi) movq (%rdi), %rcx movq %rcx, (%rdx) movq %rax, (%rdi)
This is the assembly code for a function that receives three variables at registers %rdi, %rsi and %rdx. By studying the above code explain what the function does. Then write the C code for the function implementing the function fun in hw3.c.
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