编译原理和技术讲义.ppt

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理和技术讲义

* 《编译原理与技术》讲义 * PROC P2 ; (N??) e.g.10 过程嵌套声明(续) 符号栈 偏移栈 P0 8 top null 总偏移: P0 i INT 0 j INT 4 P1 8 总偏移: P1 k INT 0 f real 4 P2 0 总偏移: P2 * 《编译原理与技术》讲义 * l : int ; e.g.10 过程嵌套声明(续) 符号栈 偏移栈 P0 8 top null 总偏移: P0 i INT 0 j INT 4 P1 8 总偏移: P1 k INT 0 f real 4 P2 4 总偏移: P2 l INT 0 * 《编译原理与技术》讲义 * a1 ; e.g.10 过程嵌套声明(续) 符号栈 偏移栈 P0 8 top null 总偏移: P0 i INT 0 j INT 4 P1 8 总偏移: P1 k INT 0 f real 4 总偏移:4 P2 l INT 0 P2 proc * 《编译原理与技术》讲义 * a2 ; e.g.10 过程嵌套声明(续) 符号栈 偏移栈 P0 8 top null 总偏移: P0 i INT 0 j INT 4 总偏移:8 P1 k INT 0 f real 4 总偏移:4 P2 l INT 0 P2 proc P1 proc * 《编译原理与技术》讲义 * PROC P3 ; (N??) e.g.10 过程嵌套声明(续) 符号栈 偏移栈 P0 8 top null 总偏移: P0 i INT 0 j INT 4 总偏移:8 P1 k INT 0 f real 4 总偏移:4 P2 l INT 0 P2 proc P1 proc P3 0 总偏移: P3 * 《编译原理与技术》讲义 * temp : int; max : int; e.g.10 过程嵌套声明(续) 符号栈 偏移栈 P0 8 top null 总偏移: P0 i INT 0 j INT 4 总偏移:8 P1 k INT 0 f real 4 总偏移:4 P2 l INT 0 P2 proc P1 proc P3 8 总偏移: P3 temp INT 0 max INT 4 * 《编译原理与技术》讲义 * a3; e.g.10 过程嵌套声明(续) 符号栈 偏移栈 top null 总偏移: P0 i INT 0 j INT 4 总偏移:8 P1 k INT 0 f real 4 总偏移:4 P2 l INT 0 P2 proc P1 proc P0 8 总偏移:8 P3 temp INT 0 max INT 4 P3 proc * 《编译原理与技术》讲义 * P? M D ; e.g.10 过程嵌套声明(续) 符号 栈空 偏移 栈空 top null 总偏移:8 P0 i INT 0 j INT 4 总偏移:8 P1 k INT 0 f real 4 总偏移:4 P2 l INT 0 P2 proc P1 proc 总偏移:8 P3 temp INT 0 max INT 4 P3 proc * 《编译原理与技术》讲义 * 记录的说明 记录(record )语法如下: T? record D end 说明D含义同前面。(一般不含有过程声明,但C++可以) 可以将记录中的域变量声明放在单独的符号表中(参照嵌套过程声明的做法,但外围过程指针为空)。 * 《编译原理与技术》讲义 * 记录说明的翻译 T? record L D end { T.type := record( top( tblptr ) ); //记录类型定义 T.width := top( offset ); // 记录的占用空间大小 pop( tblptr ); pop( offset ) } L?? { t := mktable( null ); // 无外围“过程” push(t, tblptr ); push( 0, offset ); // 域变量偏移从0开始 } D的翻译同前。 * 《编译原理与技术》讲义 * 有2个C语言的结构定义如下: struct A { struct B { char c1; char c1; char c2; long l; long l; char c2; double d; double d; } S1; } S2; e.g.11 记录域的偏移 * 《编译原理与技术》讲义 * e.g.11 记录域的偏移 数据(类型)的对齐-alignment 在 X86-Linux下: char

文档评论(0)

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

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

1亿VIP精品文档

相关文档