sinat_25536785 2016-06-20 04:19 采纳率: 0%
浏览 1143

汇编 逆向工程 求解题过程

已知递归函数refunc的C语言代码框架如下: 
1 int refunc(unsigned x) { 
2  if (【1】)  
3   return 【2】 ;  
4  unsigned nx =【3】 ; 
5  int rv = refunc(nx)   
6  return 【4】;   
7 } 

上述递归函数过程体对应的汇编代码如下:  
1 movl 8(%ebp), %ebx
 2 movl $0, %eax  
3 testl  %ebx, %ebx  
4 je  .L2  
5 movl %ebx, %eax 
6 shrl  $1, %eax  
7 movl %eax, (%esp) 
8 call  refunc  
9 movl %ebx, %edx  
10 andl  $1, %edx  
11 leal  (%edx, %eax), %eax  
12 .L2:  
……  
 ret 
 根据对应的汇编代码填写C代码中缺失部分,并说明函数的功能。

  • 写回答

1条回答 默认 最新

  • threenewbee 2016-06-20 04:32
    关注

    if (x == 0)
    return 0
    nx = x / 2
    return rv + 1

    求数字中二进制位为1的个数

    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试