4.1 程序的装入和链接
在计算机中,如何把我们编写的计算机高级语言?一般要经过几个步骤:首先是要编译,由编译程序(Compiler)将用户源代码编译成若干个目标模块(Object Module);其次是链接,由链接程序(Linker)将编译后形成的一组目标模块,以及他们所需要的库函数链接在一起,形成一个完整的装入模块(Load Module),最后是装入,由装入程序(Loader)将装入模块装入内存。
4.1.1 程序的装入
在将一个装入模块装入内存时,可以有
1.绝对装入方式
2.可重定位装入方式
3.动态运行时装入方式
绝对装入方式:
不需要对程序和数据地址进行修改可重定位装入方式:
在装入时对目标程序中指令和数据的修改过程称为重定位,又因为地址变换通常是在装入时一次完成的,以后不再发生,故城为静态重定位
(静态链接以后可以使用)动态运行时重定位:
程序和数据的地址在内存中的位置可能要经常改变,此时就应采用动态运行时装入的方式,在装入模块装入内存后,并不立即把装入模块中的相对地址换位绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。