下面的代码给出了类型ELE的结构声明以及函数fun的原型:
struct ELE { long v; struct ELE *p; } long fun(struct ELE *ptr);
当编译fun的代码时,GCC会产生如下汇编代码:
long fun(struct ELE *ptr) ptr in %rdi1fun: fun: movl $0,%eax jmp .L2 .L3: addq (%rdi),%rax movq 8 (%rdi),%rdi .L2: testq %rdi,%rdi jne .L3 rep;ret
A. 利用逆向工程技巧写出fun的C代码。
B. 描述这个结构实现的数据结构以及fun执行的操作。