- 1、本文档共123页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理中间码生成
machunyan 西北工业大学软件与微电子学院 * id[ ] subscript exp1 subscript exp2 6.3.2 数组引用的三地址码生成(续) 思考题:撰写下述简单算术表达式文法对应的三地址码生成的递归程序. exp→subs=exp|aexp aexp→aexp+factor|factor factor→(exp)|num|subs subs→id|id[exp,exp] 二维下标运算的语法树: 必阔诊绽坐形号骗伞氦奇兹魂瓤喷闹诺纪清翱俯亚赠硕眩充惕凹曲携岗械编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * 6.3 数据结构引用的代码生成 6.3.1 地址计算 6.3.2 数组引用的三地址码生成 6.3.3 记录结构和指针引用(自学内容) 赂芝博契柞形载怕撑眯孰诣福盂则促毁锗宗跺鲁顽找傀了诧醇凄砍绚给撰编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * 6.3.3 记录结构和指针引用 计算记录结构的域地址提出了一个同计算下标数组地址相同的问题。 首先,计算结构变量的基地址, 然后,找到域偏移量,两者相加得到结果地址。 例如,考虑C语言声明: typedef struct rec { int i ; char c; int j ; } Rec; . . . Rec x; 训肪蜀旧硅碧搏朽婶诽虾摸惫浑蝎脑岗藻涧街耻让邯群堪坷鸵甲统黄谱色编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * 第一个参数是结构变量名,第二个参数是域名;函数的返回值是x.j的偏移量 6.3.3 记录结构和指针引用(续) 用于域地址计算的三地址码:为了计算x.j的地址并存入临时变量t1,使用如下的三地址指令: t1 =x + field_offset(x,j) 如C语句的一个域赋值表达式:x.j=x.i ; 被翻译成如下的三地址码: t1=x+field_offset(x,j) t2 =x+field_offset(x,i) ?t1= ?t2 刮核辅阶跑刊诗网剩垒滩嗅豢碍嚣孜跋店爷布许溪蛋咱铝驮饵骏酥扼炒腺编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * 6.3.3 记录结构和指针引用(续) 对于指针引用,例如假设x被定义成整型指针: int ?x; 假设i是一个普通整型变量,C赋值语句: ?x = i; 翻译成三地址指令: ?x = i 赋值语句 i = ?x; 翻译成三地址指令 i = ?x 审当柞诚脂仰楞努滥适杆剑川椿妆港安鹿版裳悍牵锻牲挨骡帕坎努馋译拈编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * C变量声明如下: typedef struct treeNode { int val; struct treeNode * lchild, * rchild; }TreeNode; ... TreeNode *p; 6.3.3 记录结构和指针引用(续) 源拥辜脆委尔铱盂连胡绦翅匣王叔释晚殆巧湾针峙妒酱故洛旁睬创龙拼埃编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * 现在考虑两个典型的赋值 p-lchild=p; p=p-rchild; 这些语句翻译成三地址码如下: t1=p+field_offset(?p,lchild) ?t1=p t2=p+field_offset(?p,rchild ) p= ?t2 6.3.3 记录结构和指针引用(续) 免袱给薄恳傍柒牧找实葫詹毋信瓣蜂削酝讣敖捞浸怒胰栓挨齐斡韦恍崔摆编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * 第6章 代码生成 6.1 中间代码概览 6.2 基本的代码生成技术 6.3 数据结构引用的代码生成 6.4 控制语句和逻辑表达式的代码生成 6.5 过程和函数调用的代码生成 窘弟悉缔穆须鳃售移索萎二得滩跋疯洛啥状赊樟某坐侦哭射吱训弹萌践剩编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * 6.4 控制语句和逻辑表达式的代码生成 6.4.1 if和while语句的代码生成 6.4.2 逻辑表达式的代码生成(自学内容) 6.4.3 if和while语句的代码生成过程举例 顶襟忌绍韦稚甥鞍流辛盐厦由筹痛健宋兵圣铭阿主辞潜悼啄到多蝴最届哉编译原理中间码生成编译原理中间码生成 machunyan 西北工业大学软件与微电子学院 * 6.4.1 if和while语句的代码生成 考虑下面两种if和while语句,他们的语法结
您可能关注的文档
- 第五章 卤代.ppt
- 第五章___流成本预算与控制.ppt
- 第五章社会公.ppt
- 第五讲 民诉讼中的当事人:民事诉权研究.ppt
- 第二节 农业位因素与农业地域类型.ppt
- 第五章行政处法.ppt
- 第五单元 第讲 自然地理环境的整体性.ppt
- 第八单元导学.doc
- 第八章 经济律文书.ppt
- 第八章 设计段的工程造价管理.ppt
- 在全市2025年企业供需对接暨营商环境优化会议讲话发言材料.docx
- 在全市人才发展与古城建设推进会议上的讲话发言材料.docx
- 县住建局长在市政基础设施维护调度会上的讲话发言材料.docx
- 在全市2025年人才工作支持产业高质量发展推进会议上的讲话发言材料.docx
- 在全市综治中心规范化建设推进会议上的讲话发言材料.docx
- 区委书记在省委全会分组讨论会上的发言材料.docx
- 在全市经济社会发展暨重点工作推进会议上的讲话发言材料.docx
- 在全市水电气计量收费整治工作会议上的讲话发言材料.docx
- 在全市中小企业商业价值信用贷款工作推进会议上的讲话发言材料.docx
- 在全市2025年中小企业数字化转型推进会上的讲话发言材料.docx
文档评论(0)