|
|
51CTO旗下网站
|
|
移动端

1.3.3 从语法树到中间代码再到目标代码

《编译系统透视:图解编译原理》第1章运行时结构及编译过程概述,为了让读者能更直观和更容易地理解本章的内容,我们针对本章内容精心制作了视频内容,感兴趣的读者可以扫描二维码观看和学习。本节为大家介绍从语法树到中间代码再到目标代码。

作者:新设计团队来源:机械工业出版社|2016-12-17 21:12

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

1.3.3 从语法树到中间代码再到目标代码

至此,语法树已经承载了源程序的全部信息,后续的转换工作就和源程序没关系了。

如果希望一步到位,从语法树转换为目标代码,理论上和实际上都是可行的。但计算机存在多种CPU硬件平台,考虑到程序在不同CPU之间的可移植性,先转换成一个通用的、抽象的“CPU指令”,这就是中间代码最初的设计思想。然后根据具体选定的CPU,将中间代码落实到具体CPU的目标代码。

语法树是个二维结构,中间代码是准一维结构,语法树到中间代码的转换过程,本质上是将二维结构转换为准一维结构的过程。中间代码特别是RTL已经可以和运行时结构一一对应了。如图1-40所示。

运行时结构也是一维的,图1-40左侧部分的转换结果将更贴近运行时结构。

选定具体的CPU、操作系统后,中间代码就可以转换为目标代码——汇编代码(我们配置的是AT&T汇编),这时操作系统的影响还比较小。然后由汇编器依照选定操作系统的目标文件格式,将.s文件转换为具体的目标文件,对于Linux而言是.o文件,对于Windows而言是.obj文件。目标文件中已经是选定的CPU的机器指令了。

***链接器把一个或多个目标文件(库文件本质上也是目标文件)链接成符合选定操作系统指定格式的可执行文件。

通过操作系统,可执行程序就可以被载入内存执行,形成前两节我们所看到的运行时结构。

本书后续内容将详细讲解编译的主要过程:词法分析、语法分析、中间代码到目标代码,然后是汇编与链接,***讲解预处理。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

16招轻松掌握PPT技巧

16招轻松掌握PPT技巧

GET职场加薪技能
共16章 | 晒书包

289人订阅学习

20个局域网建设改造案例

20个局域网建设改造案例

网络搭建技巧
共20章 | 捷哥CCIE

645人订阅学习

WOT2019全球人工智能技术峰会

WOT2019全球人工智能技术峰会

通用技术、应用领域、企业赋能三大章节,13大技术专场,60+国内外一线人工智能精英大咖站台,分享人工智能的平台工具、算法模型、语音视觉等技术主题,助力人工智能落地。
共50章 | WOT峰会

0人订阅学习

读 书 +更多

Ubuntu Linux入门到精通

本书全面介绍了Ubuntu Linux的相关知识,内容详实,论述清晰。主要内容包括Ubuntu介绍、文件系统管理、进程管理、压缩与查询系统、Shel...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客