您的位置:首页 > 运维架构 > Linux

Linux内核分析——反汇编一个简单C程序

2015-03-08 20:34 253 查看
Linux内核分析第一周作业,在云课堂的实验楼环境下完成。

本文作者:Michael   

原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

一、实验代码:

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

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

int main(void)
{
return f(2000) + 7;
}

二、反汇编后,去除一些暂时不需要的辅助信息:

g:
pushl	%ebp
movl	%esp, %ebp
movl	8(%ebp), %eax
addl	$8, %eax
popl	%ebp
ret
f:
pushl	%ebp
movl	%esp, %ebp
subl	$4, %esp
movl	8(%ebp), %eax
movl	%eax, (%esp)
call	g
leave
ret
main:
pushl	%ebp
movl	%esp, %ebp
subl	$4, %esp
movl	$2000, (%esp)
call	f
addl	$7, %eax
leave
ret

三、堆栈的变化:
























四、总结

计算机的运行依赖于机器指令的正确执行,指令的执行过程大致概括为:取指令、译码、取数据、执行和回写等操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐