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

2.4.1  汇编词法、语法分析         汇编语言有独立的词法记号,对于汇编词法的分析,只需要构造相应的词法有限自动机就可以了。举一个简单的例子: mov eax,[ebp-8]   该指令有8个词法记号,它们分别是:'mov''eax'逗号'[''e...

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

2.4  汇编程序的设计       通过对汇编器已有的了解,可以发现汇编器和编译器的实现非常相似。编译器是将高级语言翻译为汇编 语言的转换程序,汇编器则是将汇编语言翻译为目标机器二进制代码的转换程序。汇编器实际就是汇编语 的“编译器”,虽然汇编语言并非高级语言。   ...

自己动手构造编译系统:编译、汇编与链接2.3 ELF文件格式

2.3  ELF文件格式          ELF文件格式描述了Linux下可执行文件、可重定位目标文件、共享目标文件、核心转储文件的存储格式。本书设计的编译系统只关心可执行文件和可重定位目标文件的格式,如果要设计动态链接器的话,则还需要了解共享目标文件的内容...

自己动手构造编译系统:编译、汇编与链接2.2 x86指令格式

2.2  x86指令格式          编译系统的汇编器需要把编译器生成的汇编语言程序转化为x86格式的二进制机器指令序列,然后将这些二进制信息存储为ELF格式的目标文件。因此需要先了解二进制机器指令的基本结构。   如图2-10所示,在x86的指令结构中...

自己动手构造编译系统:编译、汇编与链接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.3 符号表管理

2.1.3  符号表管理           符号表是记录符号信息的数据结构,它使用按名存取的方式记录与符号相关的所有编译信息。编译器工作时,少不了符号信息的记录和更新。在本书定义的高级语言中,符号存在两种形式:变量和函数。前者是数据的符号化形式,后...

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

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

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

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

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