什么是中间代码生成?
中间代码可以将源程序翻译成机器程序。生成中间代码是因为编译器无法一次性直接生成机器码。因此,首先,它将源程序转换为中间代码,从而进一步高效地生成机器代码。中间码可以用后缀符号、语法树、有向无环图、三地址码、四元组和三元组的形式表示。
如果它可以将编译阶段分为前端和后端两部分,那么这个阶段就介于两者之间。
中间代码生成示例 -
三地址代码- 这些是 c = a op b 形式的语句,即其中最多有三个地址,即两个用于操作数,一个用于结果。每条指令的右侧最多有一个运算符。
语句的三个地址代码示例
Postfix Notation - 在后缀表示法中,运算符出现在操作数之后,即运算符跟随操作数。
例子
表达式 (a+b) * (c+d) 的后缀符号是 ab + cd +*
表达式 (a*b) - (c+d) 的后缀符号是 ab* + cd + - 。
Syntax Trees - 它是解析树的浓缩形式,其中叶子是标识符,内部节点将是运算符。
例子
四重表示- 具有运算符和操作数字段的记录可用于描述三个地址语句。它适用于使用带字段的记录结构,首先保存操作符'op',接下来的两个分别保存操作数1和2,最后一个保存结果。这种三个地址的表示称为四元组表示。
三元组表示- 操作数 1、操作数 2 和结果字段的内容通常是指向由这些字段定义的名称的符号记录的指针。因此,在生成符号表时将临时名称引入符号表中很重要。
这可以通过使用声明的位置定义临时值来防止。如果这完成了,一个具有三个字段的记录结构就足以定义三个地址语句——第一个包含运算符,接下来的两个分别保存操作数 1 和操作数 2 的值。这种表示称为三元组表示。
中间代码生成的优势
它是独立于机器的。它可以在不同的平台上执行。
它轻松创建了代码优化功能。与机器无关的代码优化器可用于中间代码以优化代码生成。
它可以执行高效的代码生成。
从现有的前端,可以为给定的后端生成一个新的编译器。
语法导向翻译实现中间代码生成,因此通过扩充解析器,它可以折叠到解析器中
以上是 什么是中间代码生成? 的全部内容, 来源链接: utcz.com/z/363417.html