《汇编程序设计与计算机体系结构:软件工程师教程》 —1.3.3 编程语言与相应文件及编程工具之间的关系

华章计算机 发表于 2019/12/03 20:17:40 2019/12/03
【摘要】 本节书摘来自华章计算机《汇编程序设计与计算机体系结构:软件工程师教程》一书中第1章,第1.3.3节,作者是布莱恩·R. 霍尔(Brian R. Hall)[美] 凯文·J.斯隆卡(Kevin J. Slonka),爱飞翔 译。

1.3.3 编程语言与相应文件及编程工具之间的关系

把翻译流水线中的各个环节与相应的文件及编程工具放在一起考虑,也有助于我们理解这些内容。图1-4描述了与各个级别的编程语言有关的文件,以及将代码从一种语言翻译为另一种语言时所用到的计算机工具。

 image.png

图1-4 各个级别的编程语言与相应文件及编程工具之间的关系

编译器(compiler)根据处理器的指令集,把用高级语言写成的源代码转化成汇编语言这种中介形式。然后,汇编器(assembler)把这些汇编代码编码成目标代码(object code),这是一种可重定位的机器语言,其格式与具体的操作系统(Operating System,OS)平台有关。表1-2列出了各种操作系统中常见的目标文件格式。链接器(linker)把多个目标文件及静态库(static library)合并起来,以形成一个可执行文件。最后,加载器(loader)把链接器在可执行文件中所生成的指令与动态库(dynamic library)中的指令相结合,将这些机器码载入内存,以供 CPU(Central Processing Unit,中央处理器)执行。

      编程知识:什么叫作可重定位的机器语言?所谓可重定位,是指在将汇编代码翻译成目标代码时,采用一种通用的形式来表示这些代码,把第一条指令的开始位置记为 0x0h 这个地址,以后指令的位置都用它与前面指令相隔的字节数(或者说偏移量,offset)表示。这样的话,在将程序实际载入内存时,只需要把第一条指令放在某个真实的地址上就可以了,而后续的各条指令则可以根据其偏移量安排在适当的位置上。

 image.png

 

表1-2 各操作系统常用的目标文件格式

image.png


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。