全部博文(2759)
分类: LINUX
2015-03-14 04:29:27
原文地址:linux内核分析1-汇编程序在计算机是如何实现的 作者:traveler99
C程序怎么调用计算机工作?
首先,设有下面的C程序代码:
程序从main入手,调用f函数再调用g函数,最后返回main,输出结果。
C程序是高级语言,最终计算机会翻译成机器语言,由于机器语言可读性太差,我们可将它翻译成对应的汇编语言,执行以下命令
将以点开头的行去除,可以得到以下结果:
ebp:指向指定函数堆栈栈底
esp:指向指定函数堆栈栈顶
eax:指向暂存值的地址
main函数:
eip 指向main、f、g地址
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保存返回值