自己动手构造编译系统:编译、汇编与链接2.1.6 编译优化

2.1.6  编译优化          现代编译器一般都包含优化器,优化器可以提高生成代码的质量,但会使代码生成过程变得复杂。一般主流的工业化编译器会按照如图2-9所示结构进行设计。   现代编译器设计被分为前端、优化器和后端三大部分,前端包含词法分析、语法...

自己动手构造编译系统:编译、汇编与链接2.1.5 代码生成

2.1.5  代码生成             代码生成是编译器的最后一个处理阶段,它根据识别的语法模块翻译出目标机器的指令,比如汇编语言,这一步称为使用基于语法制导的方式进行代码生成。见图2-8。   为了便于理解,本书采用常见的Inte...

自己动手构造编译系统:编译、汇编与链接2.1.4 语义分析

2.1.4  语义分析          编译原理教材中,将语言的文法分为4种:0型、1型、2型、3型,并且这几类文法对语言的描述能力依次减弱。其中,3型文法也称为正规文法,词法分析器中有限自动机能处理的语言文法正是3型文法。2型文法也称为上下文无关文法,也是...

自己动手构造编译系统:编译、汇编与链接2.1.2 语法分析

2.1.2  语法分析           词法分析器的输入是文本字符串,语法分析器的输入则是词法分析器识别的词法记号序列。语法分析器的输出不再是一串线性符号序列,而是一种树形的数据结构,通常称之为抽象语法树。见图2-4。   继续前面赋值语句的例子...

自己动手构造编译系统:编译、汇编与链接2.1.1 词法分析

2.1.1  词法分析          编译器工作之前,需要将用高级语言书写的源程序作为输入。为了便于理解,我们使用C语言的一个子集定义高级语言,本书后续章节的例子都会使用C语言的一些基本语法作为示例。现在假定我们拥有一段使用C语言书写的源程序,词法分析器通...

自己动手构造编译系统:编译、汇编与链接2.1 编译程序的设计

第2章    编译系统设计    麻雀虽小,五脏俱全。 ——《围城》       一个完善的工业化编译系统是非常复杂的,为了清晰地描述它的结构,理解编译系统的基本流程,不得不对它进行“大刀阔斧”地删减。这为自 己动手实现一个简单但基本功能完整的编译系统提供了可能。虽然本书设计的是...

自己动手构造编译系统:编译、汇编与链接1.5 本章小结

1.5  本章小结   本章从编程最基本的话题聊起,描述了初学者接触程序时可能遇到的疑惑,并从编程实践经验中探索代码背 后的处理机制。然后,使用最简单的“Hello World !”程序展现主流编译器GCC对代码的处理流程。最后, 我们在工业化编译系统的基础上做了一定的限制,提出...

自己动手构造编译系统:编译、汇编与链接1.4 设计自己的编译系统

1.4  设计自己的编译系统        根据以上描述,我们意欲构造一个能将高级语言转化为可执行文件的编译系统。高级语言语法由我们自己定义,它可以是C语言语法,也可以是它的一个子集,但是无论如何,该高级语言由我们根据编程需要自行设计。另外,我们要求生成的可执行文件能正...

自己动手构造编译系统:编译、汇编与链接1.3.4 链接

1.3.4  链接             使用GCC命令进行目标文件链接很简单: gcc hello.o –o hello   GCC默认使用动态链接,如果要进行静态链接,需加上-static选项: gcc hello.o –o hell...

自己动手构造编译系统:编译、汇编与链接1.3.3 汇编

1.3.3  汇编                接着,GCC使用汇编器对hello.s进行汇编,命令如下: $gcc –c hello.s –o hello.o   生成的目标文件hello.o,Linux下称之为可重定位目标文...

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。