- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.4 多寄存器下的代码生成算法 9.4.2 基本块内活跃信息求解算法 ※ 活跃信息生成过程示例: 9.4.3 寄存器分配函数1 9.4.3 寄存器分配函数2 9.4.4 多寄存器下目标生成算法设计 ※ 多寄存器下目标代码生成过程示例 习题: 【习题9.7】简要叙述在单寄存器下: ⑴ 表达式的目标代码生成算法; ⑵ 赋值语句目标代码生成算法; 【习题9.8】简要叙述目标代码生成中的寄存器分配算法; 【习题9.9】已知下列语句: x=(a+b)/(c-d)+(a+b); ⑴ 写出优化的四元式序列; ⑵ 写出变量活跃信息(活跃)生成过程; ⑶ 描述两个寄存器(R0,R1)下的目标代码生成过程。 * * 1. 描述表的扩展: RDL[R1,R2,…,Rn;M] 2. 活跃信息属性扩展:x(L) RDL.M -- 为变量是否在内存描述字段(多值): 9.4.1 扩展环境设置: ⑴ LOCR(x)– 取操作数x地址,寄存器优先被确认! 寄存器、变量B、和变量C的现行值地址参与运算! ※ 若 LOCR(x)= Ri --- x 值在寄存器 Ri 中! ⑵ 应用时:R`、B`和 C` 分别代表: q 为四元式序号 其中: ※ 若 x∈RDL.M 则 x 现行值在内存中! ※ 相应的操作算符:+=(添加);-=(删除)。 3. 寻址函数 LOCR(x)设置,用以确认X现行值地址! ※ x(n)不活跃;x(y)活跃;x(q) q是最近应用点(活跃); 注 支持: ⑴ 在符号表上增设一个信息项( L ) L … name 活跃信息 ⑵ 四元式中变量 X 的附加信息项:X( L ) ※ 取值: L=n/y/q(不活跃/活跃/q活跃) ; ⑴ 初值:基本块内各变量 SYMBL[X( L )]分别填写: 若 X为非临时变量 则置 X( y ); 否则置 X( n ) ⑵ 逆序扫描基本块内各四元式(设为 q:(? B C A) ): 执行: ① QT[q:A( L )]:= SYMBL[A( L )]; ② SYMBL[A( L )]:=( n ); ③ QT[q:B,C( L )]:= SYMBL[B,C( L )]; ④ SYMBL[B,C( L )]:=( q ); 算法 【例9.11】基本块内下述四元式序列及活跃信息生成如下: QT[q]: q:(? B( L ) C( L ) A( L )) ⑴(+ a( ) b( ) t1( )) ⑵(- c( ) d( ) t2( )) ⑶(* t1( )t2( )t3( )) ⑷(- a( ) t3( )t4( )) ⑸(/ t1( ) 2 t5( )) ⑹(+ t4( )t5( ) x( )) y n n 6 n 6 y n 4 5 n 3 y y 3 4 y L … a b c d t1 t2 x t5 t4 t3 SYMBL[X( L )] y y y y n n y n n n n 6 6 n 5 n 4 4 n 3 3 n 2 2 n 1 1 支持: ⑴ 设置描述表 RDL[R1,R2,…,Rn;M], ⑵ 设置寻址函数 LOCR(X),确认X现行值地址! 算法 登录寄存器Ri,变量X的现行值状态! ※ 设 当前扫描的四元式为 q:( ? B C A ) Ⅰ.?【主动释放】 ① 若 B(y)且(B?RDL.M 或 B≠A) 则 若有 RDL.Rj=0,则 否则 { CODE( ST Ri,B ); RDL.M+=B; } ③ RDL.Ri-=B; RETURN(R`,B`,C`); ⒈ 若有Ri,使 RDL.Ri=B ;则 { CODE( ST Ri,Rj ); RDL.Rj:=B; } ② R`:=LOCR(Ri); B`:=LOCR(B); C`:=LOCR(C); 加入B 删除B ---- GETR(q,R`,B`,C`) 寄存器优先被确认! ⒉ 若有Ri,使 RDL.Ri=C 且 ?可交换;则 { 交换B,C(改变四元式);转 Ⅰ.;} Ⅱ.【选空闲者】…… 非情况Ⅰ.时! ① 若有RDL.Ri=0,则 R`:=LOCR(Ri) ; Ⅲ.【强迫释放】…… 除Ⅰ,Ⅱ情况外! ※剥夺一 Ri( 剥夺条件: 不活跃/应用点远! ) ① 若 D(y)且 D?RDL.M 则 { CODE( ST Ri,D ); RDL.M+=D;} ③ RDL.Ri:=0; RETURN(R`,B`,C`); ② R`:=LOCR(Ri); B`:=L
您可能关注的文档
- JAVA程序设计第4章.ppt
- JAVA程序设计第5章.ppt
- JAVA程序设计第6章.ppt
- JAVA程序设计第9章.ppt
- JAVA程序设计第10章.ppt
- JAVA程序设计第11章.ppt
- JAVA程序设计第12章.ppt
- 武汉大学计算机学院linux复习题.doc
- Linux原理及应用——专题0:Shell实例 .ppt
- Linux原理与应用——专题2:Makefile.ppt
- 2025年广西中考地理二轮复习:专题四+人地协调观+课件.pptx
- 2025年广西中考地理二轮复习:专题三+综合思维+课件.pptx
- 2025年中考地理一轮教材梳理:第4讲+天气与气候.pptx
- 第5讲+世界的居民课件+2025年中考地理一轮教材梳理(商务星球版).pptx
- 冀教版一年级上册数学精品教学课件 第1单元 熟悉的数与加减法 1.1.6 认识1-9 第6课时 合与分.ppt
- 2025年中考一轮道德与法治复习课件:坚持宪法至上.pptx
- 2025年河北省中考一轮道德与法治复习课件:崇尚法治精神.pptx
- 八年级下册第二单元+理解权利义务+课件-2025年吉林省中考道德与法治一轮复习.pptx
- 精品解析:湖南省娄底市2019-2020学年八年级(上)期中考试物理试题(原卷版).doc
- 2025年中考地理一轮教材梳理:第10讲+中国的疆域与人口.pptx
文档评论(0)