程序执行的第一条指令
(2012-04-13 02:42:41)
标签:
程序
杂谈
程序执行的第一条指令刚才看到一篇帖子讨论程序入口点的问题,学到不少东西,也看到不少莫名其妙的诸如哲学、电源、人类进化方面的问题:lol:
正好有点这方面的知识,和大家分享一下。关于各种什么语言、库就不讨论了,因为层次太高,我也清楚这么高层的东西,但在特定的平台上,其实现也该是类似的。我们就用linux为例。linux中所有程序都是通过父进程(init)fork出来的,那么新进程从什么位置执行也算是程序入口点的问题。
在大家熟悉的x86平台上面,由于寄存器少(其实也不少,不过程序员能用的少),地址都是保存在栈上的,所以父进程fork出一个新进程后,最后会执行到switch_to宏(include/asm-i386/system.h),该宏会用新进程的起始地址替换调__switch_to()函数的返回地址,然后用jmp指令调到__swith_to函数(jmp可以避免call指令带来返回地址压栈操作)。等__swith_to返回时
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。