函数fun_a有如下整体结构:
long fun_a(unsigned long x) { long val = 0; while(...){ . . . } return ...; }
GCC C编译器产生如下汇编代码:
long fun_a(unsigned long x) x in %rdi fun_a: movl $0,%eax jmp .L5 .L6: xorq %rdi,%rax shrq %rdi .L5; testq %rdi,%rdi jne .L6 andl $q,%eax ret
逆向工程这段代码的操作,然后完成下面作业:
A. 确定这段代码使用的循环翻译方法。
B. 根据汇编代码版本填写C代码中缺失的部分。
C. 用自然语言描述这个函数是计算什么的。