理论教育 计算机导论:中间代码生成

计算机导论:中间代码生成

时间:2023-11-09 理论教育 版权反馈
【摘要】:在进行了上述的词法分析、语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫作中间语言或中间代码。所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标代码。比如源程序sum∶=first﹢count10可生成四元式序列,如图6.55所示,其中t i是编译程序生成的临时名字,用于存放运算结果。

计算机导论:中间代码生成

在进行了上述的词法分析、语法分析和语义分析阶段的工作之后,有的编译程序源程序变成一种内部表示形式,这种内部表示形式叫作中间语言或中间代码。所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标代码。很多编译程序采用了一种近似“三地址指令”的“四元式”中间代码,这种四元式的形式为:(运算符,运算对象1,运算对象2,结果)。

比如源程序sum∶=first﹢count∗10可生成四元式序列,如图6.55所示,其中t i(i=1,2,3)是编译程序生成的临时名字,用于存放运算结果。

图6.55 id1:=id2﹢id3∗10的四元式序列

四元式(运算符,运算对象1,运算对象2,结果)常写成赋值语句的形式(结果=运算对象1运算符 运算对象2),比如C语言的源程序a=b∗c﹢b∗d的四元式序列为:

①t1=b∗c

②t2=b∗d

③t3=t1﹢t2

④a=t3

翻译分支、循环和函数调用等语句时,四元式的生成通常要比上述例子复杂些。比如源程序:

if(a<=b)(www.daowen.com)

a=a–c;

c=b∗c;

翻译成的四元式:

t1=a>b

if t1 goto l

t2=a–c

a=t2

l:t3=b∗c

c=t3

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈