设为首页 加入收藏

TOP

反汇编一个简单的C程序
2015-11-19 23:06:48 来源: 作者: 【 】 浏览:5
Tags:汇编 一个 简单 程序
反汇编一个简单的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让给其他的程序。

\

\

?

?

?

?

?

?

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言字节对齐问题详解 下一篇C语言的通用链表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: