首页 > 系统服务 > 详细

linux内核分析1-汇编程序在计算机是如何实现的

时间:2015-03-10 02:25:28      阅读:284      评论:0      收藏:0      [点我收藏+]

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

首先,设有下面的C程序代码:
bubuko.com,布布扣


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

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

bubuko.com,布布扣

将以点开头的行去除,可以得到以下结果:
bubuko.com,布布扣

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课程http://mooc.study.163.com/course/USTC-1000029000 

linux内核分析1-汇编程序在计算机是如何实现的

原文:http://blog.chinaunix.net/uid-23072872-id-4873130.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!