函数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. 用自然语言描述这个函数是计算什么的。
