编译器各个步骤的介绍

Posted Lemo_wd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译器各个步骤的介绍相关的知识,希望对你有一定的参考价值。

233

 

 

词法分析:scanning

将字符流变成词素序列。每个词素使用  <token-name, attribute-vallue> 格式的词法单元(token)表示。

position = initial + rate * 60 转换成  <id, 1> <=> <id,2> <+> <id,3> <*> <60>

 

语法分析:parsing

创建树形的中间表示形式。表示词法单元流的语法结构。

 

语义分析:semantic analyzer

检查代码是否符合语义。将类型信息存入语法树或符号表中,包括类型检查和类型自动转换。

 

中间代码生成:

翻译成目标代码的过程中,编译器可能构造出多个中间表示形式,语法树是其中一种表示形式,通常在语法分析与语义分析中使用。

在完成语义分析后,还需要生成一个明确的低级的或类机器语言的中间表示形式。考虑使用三地址代码的中间表示形式。它 由一组类似汇编语言的指令组成,每个指令有三个运算分量。

   指令的最右部最多只有一个运算符,并且这些指令确定了运算完成的顺序。

 

代码生成器:

以源程序的中间表示形式作为输入,映射到目标语言。如果目标语言是机器代码,那么必须为程序使用的每个变量选择寄存器或内存位置。这样,中间指令将被翻译成能够完成相同任务的机器指令序列。

 

以上是关于编译器各个步骤的介绍的主要内容,如果未能解决你的问题,请参考以下文章

编译和安装gdb源码详细步骤介绍

一文带你梳理Clang编译步骤及命令

移植opencv2.4.9到itop4412开发板

企业网站应用模式之—LAMP架构的源码编译超详细步骤,有手就行!

Ubuntu上通过android toolchain交叉编译Valgrind操作步骤

编译器是怎样工作的?