C-加载器具体做了些什么?

C-加载器具体做了些什么?

泛泛之交 发布于 2017-08-19 字数 159 浏览 1313 回复 2

我们都知道一段程序经过编译链接之后会生成二进制的可执行文件,运行这个程序的时候加载器会将程序加载到内存并执行,请问加载器具体做了些什么?后续还要做什么?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2017-09-10 2 楼

实际上加载器和链接器做了大量的事情,在linux的系统中编译生成的ELF文件有说明,加载器根据说明吧代码load到指定的内存,还要在main函数执行之前加载启动代码,这一块说不太明白,有本书你可以看下,《链接器和加载器》讲的很细。在了解这些之前最好了解下linux的ELF文件,里面很详细的有每个段占多少字节,地址是多少。

清晨说ぺ晚安 2017-08-31 1 楼

DOS下面加载exe的过程基本就是把整个镜像读到内存里面,然后操作系统用call指令调用入口点,等待程序运行结束。Windows下面首先创建一个进程和一个进程内的线程,然后把镜像复制到进程内存里面,然后将线程执行位置设置到入口点然后开始执行。其他还有一些细节,具体的不太清楚。