反汇编一个简单的C程序

反汇编一个简单的C程序


看了下网易云课堂的《Linux内核分析》,第一节要求有一个简单C程序得到汇编代码,然后分析。只要明确每个汇编指令代表的含义,就可以容易的走下去,关键是要体会里面的思想。


int g(int x){
    return x+3;
}


int f(int x){
    return g(x);
}


int main(){
    return f(8)+1;
}



加载程序会从main开始执行,过程如图(1)-(20),执行到“call f”时候 EIP=下一条指令地址=23(把保存在EIP中的下一条指令的地址压栈;设置EIP为被调函数的入口地址,相当于pushl EIP, movel f,EIP )此时的状态如图(5)

接下来执行代码块f,执行到第15条指令到达 leave(相当于movl %ebp,%esp,popl %ebp)。最后main的ret会把CPU让给其他的程序。










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值