《汇编程序设计与计算机体系结构:软件工程师教程》 —1.3.3 编程语言与相应文件及编程工具之间的关系
1.3.3 编程语言与相应文件及编程工具之间的关系
把翻译流水线中的各个环节与相应的文件及编程工具放在一起考虑,也有助于我们理解这些内容。图1-4描述了与各个级别的编程语言有关的文件,以及将代码从一种语言翻译为另一种语言时所用到的计算机工具。
图1-4 各个级别的编程语言与相应文件及编程工具之间的关系
编译器(compiler)根据处理器的指令集,把用高级语言写成的源代码转化成汇编语言这种中介形式。然后,汇编器(assembler)把这些汇编代码编码成目标代码(object code),这是一种可重定位的机器语言,其格式与具体的操作系统(Operating System,OS)平台有关。表1-2列出了各种操作系统中常见的目标文件格式。链接器(linker)把多个目标文件及静态库(static library)合并起来,以形成一个可执行文件。最后,加载器(loader)把链接器在可执行文件中所生成的指令与动态库(dynamic library)中的指令相结合,将这些机器码载入内存,以供 CPU(Central Processing Unit,中央处理器)执行。
编程知识:什么叫作可重定位的机器语言?所谓可重定位,是指在将汇编代码翻译成目标代码时,采用一种通用的形式来表示这些代码,把第一条指令的开始位置记为 0x0h 这个地址,以后指令的位置都用它与前面指令相隔的字节数(或者说偏移量,offset)表示。这样的话,在将程序实际载入内存时,只需要把第一条指令放在某个真实的地址上就可以了,而后续的各条指令则可以根据其偏移量安排在适当的位置上。
表1-2 各操作系统常用的目标文件格式
- 点赞
- 收藏
- 关注作者
评论(0)