编译原理教学课件 第一章 引论.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3. 语义分析及中间代码产生 序号 算符 左操作数 右操作数 结果 (1) 将0.618转换成实常数 T1 (2) + X T1 T2 (3) * T2 Y T3 (4) / T3 W T4 (5) = T4 Z Z=(X+0.618)*Y/W ,它的四元式表示如下 4. 优化 (1)任务:对于前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效的目标代码。 (2)依循的原则:程序的等价变换规则 (3)优化主要内容: 公共子表达式的提取:x=(a+b)*c+(a+b)*d 合并已知量:c=a+b …a、b没有值变化 d=a+b (c、d合并) 删除无用语句 循环优化(循环体内都是必须的) 4. 优化 FOR K:=1 TO 100 DO BEGIN M := I + 10 * K; N := J + 10 * K; END 中间代码(一) 序号 OPR OPN1 OPN2 RESULT 注释 (1) := 1 K K:=1 (2) j 100 K (9) if (100K) goto (9) (3) * 10 K T1 T1:=10*K (4) + I T1 M M:=I+T1 (5) * 10 K T2 T2:=10*K (6) + J T2 N N:=J+T2 (7) + K 1 K K:=K+1 (8) j (2) goto (2) (9) 300次加法 200次乘法 转换后的等价代码(二) 序号 OPR OPN1 OPN2 RESULT 注释 (1) := I M M:=I (2) := J N N:=J (3) := 1 K K:=1 (4) j 100 K (9) if (100K) goto (9) (5) + M 10 M M:=M+10 (6) + N 10 N N:=N+10 (7) + K 1 K K:=K+1 (8) j (4) goto (4) (9) 301次加法 5. 目标代码产生 (1)任务: 把中间代码变换成特定机器上的目标代码。 (2)依赖于硬件系统结构和机器指令的含义 (3)目标代码三种形式: 绝对指令代码: 可直接运行 可重新定位指令代码: 需要连接装配(.obj文件) 汇编指令代码: 需要进行汇编 模块A … a 模块B … b 模块C … c 模块A … a 模块B … b 模块C … c 模块A … a 模块D … 模块C … c 例: b=a+2 MOV a, R1 ADD #2, R1 MOV R1, b 0001 01 00 * 0011 01 10 0100 01 00 * L 0001 01 00 0011 01 10 0100 01 00 5. 目标代码产生 例: b=a+2 MOV a, R1 ADD #2, R1 MOV R1, b 0001 01 00 * 0011 01 10 0100 01 00 * L 0001 01 00 0011 01 10 0100 01 00 三. 编译程序结构 编译程序总框 四元式 单词符号 语法单位 四元式 目标代码 词法分析器 语法分析器 语义分析与中间代码生成器 优化段 源程序 表 格 管 理 出 错 处 理 目标代码生成器 2. 表格和表格管理 表格:登记源程序的各类信息和编译各阶段的进展情况。 常见的表格:符号名表,常数表,标号表,入口名表,过程引用表。 格式: 名字 信息 例: PASCAL程序段: PROCEDURE INCWAP(M,N:INTEGER); LABEL START; VAR

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档