6语义分析和中间代码生成.ppt

  1. 1、本文档共179页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多分支语句的翻译 switch语句的语法: switch expression begin case valuE1: statement1 case valuE2: statement2 ......................... ........ case value n-1:statement n-1 defalt:statement n end switch语句翻译成的三地址代码控制流程: 1.对表达式求值; 2.在列出的valuE1, valuE2,…,value n-1 这些值中寻找与表达式的值相等的值。 如果没有这样的值存在,则让“缺席值” 与表达式匹配; 3.执行在(2)中寻找到的值相联系的语 句(某个statement)。 switch语句的目标代码结构: 对expression求值并置于t的有关代码 goto test L1: 有关statement1的代码 goto next L2: 有关statement2的代码 goto next …………………………………… Ln-1: 有关statement n-1的代码 goto next Ln: 有关statementn的代码 goto next (接上页) test : if t=value1 goto L1 if t=value2 goto L2 ……………………. if t=valuen-1goto Ln-1 goto Ln next: expression: 选择器,将被计算出一个值。 valueE1,valueE2,…,value n-1: 表达式可能取的 值。 default: “缺席值”。用来在expression的值不等 于任何value i时来匹配expression。 6.5.4 数组元素的引用 数组元素的三地址代码是什么? 如何生成数组元素的三地址代码。 一. 数组元素地址的计算公式 ◆ 数组A的下标为i的元素的开始地址 int a[20]; 求 a[i]的地址. base+(i-low )* w (7.4) =bace-low*w + i*w 常量部分(可在编译时计算出来)+变量部分 其中, base 是分配给数组的相对地址, low为数组下标的下界. ◆对于一个二维数组,可以按行或按列存放 若按行存放,则可用如下公式计算A[i1,i2] 的相对地址: base+((i1 - low1)* n2+i2 - low2)*w) = base-((low1 *n2)+low2)*w + ((i1*n2)+i2)* w (7.5) 令 C= ((low1 *n2)+low2)*w ◆计算元素A[i1,i2,...,ik] 相对地址的推广公式((...((i1*n2+i2)*n3+i3...)*nk+ik)*w+base-((...((low1*n2+low2)*n3+low3...)*nk+lowk)*w (7.6) C= ((...((low1*n2+low2)*n3+low3)...)*nk +lowk) * w a[i1,i2,…in]的地址 =base-c+变量部分 x:=a[i1,i2] 三地址代码结构: t1: =变量部分 t2:=base-c t3:=t2[t1]

文档评论(0)

july77 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档