第十一章代码生成内容摘要:

变量值的目标代码时 , 尽可能让该变量保留在寄存器中。 后续的目标代码尽可能引用变量在寄存器中的值 , 而不访问内存。 在离开基本块时 , 把存在寄存器中的现行的值放到主存中。 国防科技大学计算机系 602教研室 待用信息  如果在一个基本块内 , 四元式 i对 A定值 ,四元式 j要引用 A值 , 而从 i到 j之间没有 A的其他定值 , 那么 , 我们称 j是四元式 i的变量 A的 待用信息。 ( 即下一个引用点 ) i: A:=B op C … j: D:=A op E  假设在变量的符号表登记项中含有记录待用信息和活跃信息的栏。 国防科技大学计算机系 602教研室  待用信息和活跃信息的表示: 1 (x,x)表示变量的待用信息和活跃信息。 其中 i表示待用信息 , y表示活跃 , ^表示非待用和非活跃; 2 在符号表中 , (x, x)→(x , x)表示后面的符号对代替前面的符号对; 3 不特别说明 , 所有说明变量在基本块出口之后均为非活跃变量。 国防科技大学计算机系 602教研室  计算待用信息和活跃信息的算法步骤: 1. 开始时 , 把基本块中各变量的符号表登记项中的待用信息栏填为 “ 非待用 ” ,并根据该变量在基本块出口之后是不是活跃的 , 把其中的活跃信息栏填为 “ 活跃 ” 或 “ 非活跃 ” ; 国防科技大学计算机系 602教研室 2. 从基本块出口到基本块入口 由后向前 依次处理各个四元式。 对每一个四元式 i: A:=B op C, 依次执行下面的步骤: 1) 把符号表中变量 A的待用信息和活跃信息附加到四元式 i上; 2) 把符号表中 A的待用信息和活跃信息分别置为“非待用”和“非活跃”; 3) 把符号表中变量 B和 C的待用信息和活跃信息附加到四元式 i上; 4) 把符号表中 B和 C的待用信息均置为 i, 活跃信息均置为“活跃”。 国防科技大学计算机系 602教研室 例:基本块 1. T:=AB 2. U:=AC 3. V:=T+U 4. W:=V+U 设 W是基本块出口之后的活跃变量。 建立待用信息链表与活跃变量信息链表如下: 国防科技大学计算机系 602教研室 变量名 初始状态→信息链 ( 待用 /活跃信息栏 )T (^,y) → (3,y ) → (^,^ )A (^,^) → (2,y ) → (1,y )B (^,^) → (1,y )C (^,^) → (2,y )U (^,^) → (4,y ) → (3,y ) → (^,^)V (^,^) → (4,y ) → ( ^,^)W (^,y) → ( ^,^)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。