Question: 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
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.)
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
