程序开发的流程

程序的链接与装入

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

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

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

程序的链接

链接的定义

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

链接的工作

程序的链接与装入

链接的方式

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

程序的装入

装入的定义

将代码装入内存,准备运行。
装入模块被装入内存时需要解决逻辑地址和物理地址不一致的问题。
程序的链接与装入

装入的方式

绝对装入方式

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

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

可重定位装入方式

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

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

运行时动态装入方式

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

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

相关文章:

  • 2021-12-10
  • 2021-06-09
  • 2022-01-19
  • 2021-05-15
  • 2021-09-09
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-25
  • 2021-10-30
  • 2021-12-17
  • 2021-07-15
相关资源
相似解决方案