码迷,mamicode.com
首页 > 其他好文 > 详细

反汇编一个简单的C程序

时间:2015-04-13 20:53:15      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:gcc   x86   

反汇编一个简单的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,然后相当于pushl EIP, movel f,EIP 此时的状态如图(5)

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

技术分享

技术分享

反汇编一个简单的C程序

标签:gcc   x86   

原文地址:http://blog.csdn.net/vonzhoufz/article/details/45031419

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!