程序的链接与装入

程序开发的流程

在这里插入图片描述

步骤定义
编辑创建一个程序,根据高级语言的语法规则书写代码
预处理在编译之前进行的处理 (C语言的预处理:1.宏定义2.文件包含3.条件编译 )
汇编汇编代码转换机器码
编译1、检查语法后,并把高级语言转换成计算机可识别的低级语言即2进制语言 2、利用编译程序从源语言编写的源程序产生目标程序的过程
链接把目标模块相对对立的地址空间合并成一个地址空间
装入将代码装入内存,准备运行
运行运行可执行文件

软件工程的角度上看程序的开发

需求分析、设计、实现、测试

程序的链接

链接的定义

链接,是将目标模块相对独立的地址空间合并成一个地址空间,该地址空间可以是一维的,也可以是二维的,我们将这个地址空间称为逻辑地址空间。

链接的工作

在这里插入图片描述

链接的方式

方式定义
静态链接方式程序运行之前,将各目标模块链接成一个完整的装入模块,以后不再拆开
装入时动态链接目标模块再装入内存时,遍装入遍链接,在内存中形成一个完整的装入模块
运行时动态链接程序在执行中,当发现某个被调用模块尚未链接,立即由OS在系统内找到该模块并将之装入内存,并把它链接到调用者模块上。

程序的装入

装入的定义

将代码装入内存,准备运行。
装入模块被装入内存时需要解决逻辑地址和物理地址不一致的问题。
在这里插入图片描述

装入的方式

绝对装入方式

绝对装入方式(AbsoluteLoadingMode),根据装入模块即将在内到存驻留的起始物理地址,链接从起始物理地址处开始向上(向下)扩展,产生与物理地址一致的代码,即装入模块的逻辑地址与装入内存物理地址一致。

  1. 常应用于嵌入式开发中
  2. 软硬件联系紧密,依赖于硬件平台
可重定位装入方式

到可重定位装入方式(RelocationLoadingMode),装入模块在被装入内存时修改装入模块的逻辑地址,使其与即将装入内存的物理地址

  1. 在外存中存放是独立的逻辑地址
  2. 不依赖于任何的硬件平台,进入内存中才与硬件平台紧密相关
运行时动态装入方式

运行时动态装入方式(Run-timeDynamicLoading)装入模块装入到内存时,并不立即修改装入模块的逻辑地址而是把逻辑地址到物理
地址的转换推迟到程序真正运行时进行。

  1. 与硬件平台无紧密联系,
  2. 程序可以在内存中来回移动。
  3. 重定位寄存器在硬件上增加了成本,使软件彻底独立于硬件平台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值