程序装入链接
程序装入
引言
首先明确下从.c程序到跑在计算机中都经历了什么过程?
- 首先将.c程序编译
- 编译以后由于使用了各个模块,需要进行链接操作
- 链接完成以后,生成了exe文件,需要将其装入内存中,此即装入
- 我们双击一个exe文件,其实就是触发了装入
- 装入以后就交给操作系统来完成(包括进程创建等过程)
- 至此我们就知道了从.c到跑在计算机中的程序都经历了哪些过程
后面讲解虚拟内存的时候需要用到程序装入链接的知识,所以这里介绍一下。
- 绝对装入
- 可重定位装入
- 动态运行时装入
首先将例子拿出来,有两个文件,第一个为main.c第二个为f.c,main.c中的main函数调用了f函数,如下所示:
main.c
void main(){
f();
}
f.c
int c=0;
void f(){
c=c+1;
}
最后的可执行程序可以理解成如下:
1.绝对装入
所谓绝对装入,即将各个指令的地址都确定下来,如下所示: