- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                4中间代码生成-南京大学计算机科学与技术系
                    
版权所有 南京大学计算机科学与技术系 许畅等 2018春季版 
4.  中间代码生成 
   本章实验为实验三,任务是在词法分析、语法分析和语义分析程序的基础上,将C源代 
码翻译为中间代码。理论上中间代码在编译器的内部表示可以选用树形结构(抽象语法树) 
或者线形结构(三地址代码)等形式,为了方便检查你的程序,我们要求将中间代码输出成 
线性结构,从而可以使用我们提供的虚拟机小程序(附录B )来测试中间代码的运行结果。 
   需要注意的是,由于在后面的实验中还会用到本次实验已经写好的代码,因此保持一个良 
好的代码风格、系统地设计代码结构和各模块之间的接口对于整个实验来讲相当重要。 
4.1   实验内容 
4.1.1 实验要求 
  在本次实验中,我们对输入的C语言源代码文件做如下假设 (注意,假设2和3可能因后 
面的不同选做要求而有所改变): 
   1) 假设1:不会出现注释、八进制或十六进制整型常数、浮点型常数或者变量。 
  2)  假设2:不会出现类型为结构体或高维数组(高于1维的数组)的变量。 
  3)  假设3 :任何函数参数都只能为简单变量,也就是说,结构体和数组都不会作为参数传 
      入函数中。 
  4)  假设4:没有全局变量的使用,并且所有变量均不重名。 
   5) 假设5:函数不会返回结构体或数组类型的值。 
   6) 假设6:函数只会进行一次定义(没有函数声明)。 
  7)  假设7:输入文件中不包含任何词法、语法或语义错误 (函数也必有return语句)。 
   你的程序需要将符合以上假设的C源代码翻译为中间代码,中间代码的形式及操作规范 
如表1所示,表中的操作大致可以分为如下几类: 
   1) 标号语句LABEL用于指定跳转目标,注意LABEL与x之间、x与冒号之间都被空格或制 
      表符隔开。 
  2)  函数语句FUNCTION用于指定函数定义,注意FUNCTION与f之间、f与冒号之间都被空 
      格或制表符隔开。 
  3)  赋值语句可以对变量进行赋值操作(注意赋值号前后都应由空格或制表符隔开)。赋 
      值号左边的x一定是一个变量或者临时变量,而赋值号右边的y 既可以是变量或临时变 
      量,也可以是立即数。如果是立即数,则需要在其前面添加“# ”符号。例如,如果要 
      将常数5赋给临时变量t1 ,可以写成t1 := #5 。 
  4)  算术运算操作包括加、减、乘、除四种操作 (注意运算符前后都应由空格或制表符隔 
      开)。赋值号左边的x一定是一个变量或者临时变量,而赋值号右边的y和z既可以是变 
                                      61 
版权所有 南京大学计算机科学与技术系 许畅等 2018春季版 
                          表1. 中间代码的形式及操作规范。 
                  语法                                描述 
                LABEL x :          定义标号x 。 
              FUNCTION f :         定义函数f 。 
                 x := y            赋值操作。 
               x := y + z          加法操作。 
               x := y - z          减法操作。 
               x := y * z          乘法操作。 
               x := y / z          除法操作。 
                 x := y           取y 的地址赋给x 。 
                 x := *y           取以y值为地址的内存单元的内容赋给x 。 
                 *x := y           取y值赋给以x值为地址的内存单元。 
                 GOTO x            无条件跳转至标号x 。 
          IF x [relop] y GOTO z    如果x与y满足[relop]关系则跳转至标号z 。 
                RETURN x           退出当前函数并返回x值。 
              DEC x [size]         内存空间申请,大小为4 的倍数。 
                
                您可能关注的文档
- 0261116武凤霞漫谈优秀教师的成长.PPT
 - 12017年公共机构节能工作情况调查表2公共机构推广应用新能源.DOC
 - 142009体育教育专业专科起点本科函授教学计划.DOC
 - 2010115基地公共科目-职业病防治知识3-复旦大学附属肿瘤医院.PPT
 - 2010各级纵向科研项目开题一览表-长沙学院.DOC
 - 2011上半年农口工作总结.DOC
 - 2012—2013学第二学期期末试题高二生物20106满分120.DOC
 - 2012年上海学生运动会桥牌比赛高校组.DOC
 - 2013北京海淀区高三生物期中试卷.DOC
 - 2016年U互动我爱足球广东五人足球争霸赛规程比赛名称主.DOC
 
- 7月份外汇储备数据点评估值效应消退短期资本流出收窄带动外储.PDF
 - 84港口工程1993年第1期栓锚固的D型橡胶护舷而选用改良D型.PDF
 - 8个稻瘟病抗性基因在三系杂交粳稻亲本中的分布-上海农业科学院.PDF
 - 80211ac第五代Wi-Fi技术-易迪拓培训.PDF
 - AquaWIIforGuangdong指数类保险在广东水产养殖-SwissRe.PDF
 - Android应用权限调用开发者-电信终端产业协会.PDF
 - BDE一47降解菌的筛选及破乳提高回收率的方法优化.PDF
 - AutodeskRevit2018繁中版安装流程-协勤资讯.PDF
 - Besov空间中的一些最佳逼近与最佳逼近元之间的等价关系.PDF
 - AZ31镁合金棒材在不同温度下拉伸和压缩变形-沈阳航空航天大学.PDF
 
最近下载
- 2023年资料员资格考试题库答案下载.docx
 - 煤岩复合体能量传递特性与动力灾害关联性.docx VIP
 - 高血压的危害及有效的降压方法.pptx VIP
 - 生涯发展报告.pdf VIP
 - 2025年山东省财金投资集团有限公司人员招聘笔试备考题库及答案解析.docx VIP
 - 数学活动 月历中的奥秘及和为定值的两数积的规律 2025-2026学年人教版数学八年级上册.docx
 - 2026教育部教育技术与资源发展中心(中央电化教育馆)招聘3人(非事业编)笔试备考试题及答案解析.docx VIP
 - 弱电施工方案.doc VIP
 - NB_T 11234-2023 压水堆核电厂常规岛压力管道监督管理导则.pdf VIP
 - 2025-2026学年苏教版(2024)小学科学三年级上册(全册)每课知识点清单 .pdf
 
原创力文档
                        

文档评论(0)