Chinaunix首页 | 论坛 | 博客
  • 博客访问: 712093
  • 博文数量: 94
  • 博客积分: 1937
  • 博客等级: 上尉
  • 技术积分: 1618
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 18:46
个人简介

专注数据库开发管理

文章分类

全部博文(94)

文章存档

2015年(1)

2014年(2)

2013年(19)

2012年(32)

2011年(10)

2010年(30)

分类: LINUX

2015-03-08 23:22:01

C程序怎么调用计算机工作?

首先,设有下面的C程序代码:


程序从main入手,调用f函数再调用g函数,最后返回main,输出结果。

C程序是高级语言,最终计算机会翻译成机器语言,由于机器语言可读性太差,我们可将它翻译成对应的汇编语言,执行以下命令

将以点开头的行去除,可以得到以下结果:

ebp:指向指定函数堆栈栈底

esp:指向指定函数堆栈栈顶

eax:指向暂存值的地址

main函数:

eip 指向mainfg地址

subl $4,$esp 向下移动一个地址

movl $8,(%esp)将8移至esp的地址

call f eip指向f函数

f函数:

movl 8(%ebp),%eax  eax指向ebp+8

g函数:

popl %eax 返回eax

ret       esp上移一位,eip移至下一指令,eax保存返回值

-- the end --
朱新飞  原创作品转载请注明出处  《Linux内核分析》MOOC课程
阅读(2607) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~