- 1、本文档共75页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌套过程语言活动记录 diaplay表在活动记录中的相对地址d在编译时能完全确定。 假定在现行过程中引用了某层过程(令其层次为k)的X变量,那么,可用下面两条指令获得X的地址: LD R1 (d+k)[SP] LD R2 dx[R1] 参数个数 返回地址 形式单元 临时单元 内情向量 局部变量 SP? 0 1 2 老SP TOP? Display 表 全局Diaplay 3 d … program P; var a, x : integer; procedure Q(b: integer); var i: integer; procedure R(u: integer; var v: integer); var c, d: integer; begin if u=1 then R(u+1, v) ...... v:=(a+c)*(b-d); ...... end {R} begin ...... R(1,x); ...... end {Q} procedure S; var c, i:integer; begin a:=1; Q(c); ...... end {S} begin a:=0; S; ...... end. {P} 主程序P ?过程 S ?过程 Q ?过程 R ?过程 R 0 0 返回地址 1 0(display) 2 a 3 x 4 0 5 返回地址 6 2(全局display) 7 0(形参个数) 8 0 9 5 10 主程序?过程 S c 11 i 12 TOP? SP ? 动态链 display 0 0 返回地址 1 0(display) 2 a 3 x 4 0 5 返回地址 6 2(全局display) 7 0(形参个数) 8 0 9 5 10 主程序P?过程 S ?过程 Q c 11 i 12 动态链 5 13 返回地址 14 9(全局display) 15 1(形参个数) 16 b(形参) 17 0 18 13 19 i 20 TOP? SP ? 0 0 返回地址 1 0(display) 2 a 3 x 4 0 5 返回地址 6 2(全局display) 7 0(形参个数) 8 0 9 5 10 主程序P?过程 S ?过程 Q ?过程 R c 11 i 12 动态链 5 13 返回地址 14 9(全局display) 15 1(形参个数) 16 b(形参) 17 0 18 13 19 i 20 13 21 返回地址 22 18(全局display) 23 2(形参个数) 24 u(形参) 25 v(形参) 26 0 27 13 28 21 29 c 30 d 31 TOP? SP ? 0 0 返回地址 1 0(display) 2 a 3 x 4 0 5 返回地址 6 2(全局display) 7 0(形参个数) 8 0 9 5 10 主程序P ?过程 S ?过程 Q ?过程 R ?过程 R c 11 i 12 动态链 5 13 返回地址 14 9(全局display) 15 1(形参个数) 16 b(形参) 17 0 18 13 19 i 20 13 21 返回地址 22 18(全局display) 23 2(形参个数) 24 u(形参) 25 v(形参) 26 0 27 13 28 21 29 c 30 d 31 TOP? SP ? 21 32 返回地址 33 27(全局display) 34 2(形参个数) 35 u(形参) 36 v(形参) 37 0 38 13 39 32 40 c 41 d 42 参数个数 返回地址 形式单元 临时单元 内情向量 局部变量 老SP Display 表 全局Diaplay 1. 每个par Ti(i=1,2,…n)可直接翻译成如下指令: (i+4)[TOP]:= Ti (传值) (i+4)[TOP]:=addr(Ti ) (传地址) 过程调用、过程进入、过程返回 TOP? SP ? 调用过程的 活动记录 …… 形式单元 参数个数 返回地址 形式单元 临时单元 内情向量 局部变量 老SP Display 表 全局Diaplay 2. call P,n 被翻译成: 1[TOP]:=SP (保护现行SP) 3[TOP]:=SP+d (传送现行display地址) 4[TOP]:=n (传递参数个数) JSR (转子指令) 过程调用、过程进入、过程返回 TOP? SP ? 调用过程的 活动记录 …… 老SP 全局Diaplay 参数个数 3. 转进过程P后,首先定义新的SP和TOP,保存返回地址。 4. 根据全局di
文档评论(0)