编译原理重点PPT第1章概述(0833).ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:50 大小:3.3MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

编译原理重点PPT第1章概述(0833).ppt

编译原理重点PPT第1章概述(0833).ppt

预览

免费试读已结束,剩余 40 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

编译原理与课程有关的问题课程内容本节内容简介1.1翻译程序与编译程序·所谓翻译程序是指这样一种程序,它能将用甲语言(源语言)编写的程序翻译成与之等价的用乙语言(目标语言)书写的程序。编译方式是一种分阶段进行的翻译方式。⑴在编译方式下,源程序的执行需要分阶段。关于编译程序的几点说明关于编译程序的几点说明完成解释工作的解释程序将按源程序中语句的动态顺序,逐句地进行分析解释,并立即予以执行。1.编辑器2.预处理器3.编译器4.连接程序5.装入程序6.调试程序源程序解释执行的历程所谓编译过程是指将高级语言程序翻译为等价的目标程序的过程。翻译和编译工作的比较例:一个简要的C程序Main()/*usedforillustratingcompilingprocess*/{Inta,b,c,x;……a=a+b*c+b*c;x=a*3-b*c;b=a+)b*(x-;……}依据语言词法规则,分析由字符组成的源程序,把它识别为一个一个具有独立意义的最小语法单位,即“单词”,并识别出与其相关的属性(如是标识符,是界限符,还是数,等等),再转换成长度上统一的标准形式(这种统一的标准形式既刻画了单词本身,又刻画了它所具有的属性,称为属性字),以供其它部分使用。上述源程序通过词法分析识别出如下单词符号:基本字:main,int标识符:a,b,c,x常数:3运算符:+,*,-界符:(,),;,{,},/*,*/,=长度上统一的标准形式——TOKEN串TOKEN串是一个二元组:(单词类别,单词的值)其中:“单词的类别”用既已存在的一组整数值(称为单词的种别码)表示。用以区分不同种类的单词。“单词的值”是单词的机内表示形式。一般是ASCII码。依据语法规则,逐一分析词法分析时得到的单词,把单词串分解成各类语法单位,即确定它们是怎样组成说明和语句,以及说明和语句又是怎样组成程序的。分析时如发现有不合语法规则的地方,便将出错的位置及出错性质打印报告给程序员;如无语法错误,则用另一种中间形式给出正确的语法结构,供下一阶段分析使用。通过语法分析,识别出:a,b,x是<变量>这个语法单位;a+b*c+b*c组合成<表达式>这样的语法单位;识别出<说明语句>,<赋值语句>这样的语法单位,并检查正确性。例如,<赋值语句>由<变量>=<表达式>构成;这里发现<赋值语句>b=a+)b*(x-的语法错误。原因是<表达式>a+)b*(x-错误依据语言的语义规则对语法分析得到的语法结构进行静态语义检查(确定类型、类型和运算合法性检查、识别含义与相应的语义处理及其它一些静态语义检查),并用另一种内部形式(如中间代码)表示出来,或者直接用目标语言表示出来。凡在编译时可以确定的内容称为“静态”的;凡必须推迟到程序运行时才能确定的内容称为“动态”的。具体说来语义分析包括两方面:(1)静态语义检查。要检查标识符是否被定义,前后的数据类型是否一致。如上述源程序中x=a*3-b*c,要查看赋值号左右的变量和表达式的类型是否一致。(2)进行语义处理。针对不同类型的语句语义处理的方式不同。对说明语句,要将说明性语句中所定义的变量名字及其有关信息送进符号表,并为之分配存储单元;对可执行语句(如赋值语句、条件语句、循环语句等),就要生成可表达语义的中间代码。分析到说明语句inta,b,c,x;后,应把变量a,b,c的类型int填入符号表中,分析到}后,将产生以下四元式序列:运算符左运算对象右运算对象工作单元注释(1)*bcT1b*cT1(2)+aT1T2a+T1T2(3)*bcT3b*cT3(4)+T2T3T4a+b*c+b*cT4(5)=T4_aT4a(6)*a3T5a*3T5(7)*bcT6b*cT6(8)_T5T6T7a*3-b*cT7(9)=T7_xT7x语义翻译工作通常穿插在语法分析过程当中,因而语义翻译程序是由一组语法子程序构成的。依据程序的等价变换规则,尽量压缩目标程序运行所需的时间和所占的存储空间,以提高目标程序的质量。代码优化分为两类:(1)与机器有关的优化:主要涉及如何分配寄存器。这种优化是在生成目标代码时进行的。(2)与机器无关的优化:包括对中间代码的优化,局部优化和循环优化。上述四元式经优化得:(1)(*,b,c,T1)(2)(+,a,T1,T2)(3)(+,T1,T2,T4)(4)(=,T4,_,a)(5)(*,a,3,T5)(6)(_,T5,T1,T7)(7)(=,T7,_,x)编译程序所产生的目标代码质量的高低,主要取决于这一阶段里代码优化程序功能的强弱。如果语义分析时把源程序表示成中间形式而不是表示成目标指令,则由本部分完成从中间形式到目标指令的