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

本文是Linux内核分析课程的一部分,作者Michael在云课堂的实验环境中,探讨了如何反汇编一个简单的C程序。文章涵盖了实验代码、堆栈变化以及对计算机指令执行过程的理解。
摘要由CSDN通过智能技术生成

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

三、堆栈的变化:

四、总结

计算机的运行依赖于机器指令的正确执行,指令的执行过程大致概括为:取指令、译码、取数据、执行和回写等操作。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值