编译原理-西安交通大学(冯博琴)8运行时空间组织2.0.pptVIP

  • 9
  • 0
  • 约1.58万字
  • 约 67页
  • 2017-03-15 发布于浙江
  • 举报

编译原理-西安交通大学(冯博琴)8运行时空间组织2.0.ppt

第6章 符号表 第6章 符号表 7.4.4 参数子程序 ALGOL 的换名形式参数对应的实参的处理方法:子程序,俗称 thunk 处理办法: 1,若实参是简单变量或者下标变量,thunk 直接计算该变量的地址; 2,若实参是一个其他表达式, thunk 的任务是计算此表达式的值并把它存放在某个确定的工作单元中,然后回送此单元的地址。 例子 过程 P 中的某个分程序 B 内通过语句 Q ( E ) 调用了过程 Q ,此处实参 E 是一个表达式。过程 Q 中的某一个分程序 B1 对 Q 的形式参数 Z 的引用意味着对 E 的 thunk 调用 Proc P B: Q ( E ) Proc Q ( Z ) B1: Z 注意: 1,B1 对 Q 的形式参数 Z 的引用意味着对 E 的 thunk 的调用,这个 thunk 必须工作在 P 的环境中; 2,如果参数表达式 E 中含有函数调用,会改写栈中 B.TOP 所指位置以上的部分,所以必须预先把 B 的 TOP 值暂时改称指向栈的最高位置(B1.TOP),以保护他们(实际上就是 Q 的数据区)不被破坏 。(具体解释见后面的图示) 4,JSR Z /* 间接转子,进入 thunk */ 1,2 [X] := 返回地址; 进入 thunk 后的执行 2,3 [X] := B.TOP ( thunk 所在的 B ); 3

文档评论(0)

1亿VIP精品文档

相关文档