4.2程序的装入和链接内存库链接装入装入模块编译程序市程序程序生的目标模块----第一步第二步第三步图4-2-1对用户程序的处理步骤
4.2 程序的装入和链接 图 4-2-1 对用户程序的处理步骤
程序的装入4. 2. 11.绝对装入方式程序中所使用的绝对地址,可在编译或汇编时给出,也可由程序员直接赋予。由程序员直接给出绝对地址时,不仅要求程序员熟悉内存的使用情况,而且一旦程序或数据被修改后,可能要改变程序中的所有地址。因此,通常是在程序中采用符号地址,然后在编译或汇编时,再将这些符号地址转换为绝对地址
4.2.1 程序的装入 1. 绝对装入方式 程序中所使用的绝对地址,可在编译或汇编时给出, 也 可由程序员直接赋予。 由程序员直接给出绝对地址时, 不仅要求程序员熟悉内 存的使用情况,而且一旦程序或数据被修改后,可能要改变 程序中的所有地址。 因此,通常是在程序中采用符号地址,然后在编译或汇 编时,再将这些符号地址转换为绝对地址
2.可重定位装入方式起始地址01100001000LOAD1.250011000LOAD1.2500250036512500365X000b名15000作业地址空间T逻辑地址物理地址内存空间花图4-2-2作业装入内存时的情况
2. 可重定位装入方式 图 4-2-2 作业装入内存时的情况 逻辑地址 物理地址 起始地址
3.动态运行时装入方式动态运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此,装入内存后的所有地址都仍是相对地址。酒
3. 动态运行时装入方式 动态运行时的装入程序,在把装入模块装入内存 后,并不立即把装入模块中的相对地址转换为绝对地 址,而是把这种地址转换推迟到程序真正要执行时才 进行。 因此, 装入内存后的所有地址都仍是相对地址
程序的链接4. 2. 21.静态链接方式在程序运行之前,先将各功能模块及它们所需的库函数链接成一个完整的装入模块,以后不再拆开00模块A模块ACALL B:JSRL"L-1Return:L-1Retum:L模块B模块BJSR"L+M"CALL C:福M-1L+M-1Return;Retum;可执行文件L+M酒模块C0模块C福L+M+N-1Return:N-1Return;(a)目标模块(b)装入模块
4.2.2 程序的链接 在程序运行之前,先将各功能模块及它们所需的库函数, 链接成一个完整的装入模块,以后不再拆开。 1.静态链接方式 可执行文件