编译原理课件(hdu)CHAPTER10(Code Generation).ppt

编译原理课件(hdu)CHAPTER10(Code Generation).ppt

ID:51593156

大小:121.00 KB

页数:15页

时间:2020-03-25

编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第1页
编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第2页
编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第3页
编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第4页
编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第5页
资源描述:

《编译原理课件(hdu)CHAPTER10(Code Generation).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Chapter10CodeGeneration代码生成器(CodeGenerator)运行时存储管理(Run-timestoragemanagement)关于寄存器分配(Registerallocation)简单代码生成算法(ACode-GenerationAlgorithm)7/23/2021110代码生成代码生成器P513Fig.9.1输入:(经优化后的)三地址代码、符号表输出:目标代码7/23/2021210代码生成目标代码的形式绝对机器语言代码都是绝对地址,放在内存的固定地方,可立即执行可重定位的机器语言代码可重定位的多个目标模块,需经连接装配,然后执行汇编

2、语言代码生成比较容易,但需汇编7/23/2021310代码生成运行时存储管理上一讲内容的具体实现P522-528Fig.9.4—9.67/23/2021410代码生成关于寄存器分配只考虑在一个基本块内如何分配寄存器以提高代码的运行效率分配的原则:计算引用的变量值和计算结果尽量放在寄存器中,直到寄存器不够用在离开基本块前将寄存器的内容放到内存中在一个基本块内后边不再被引用的变量所占用的寄存器应尽早释放7/23/2021510代码生成下次引用信息:x在语句I中定值x能够到达J语句,J中引用了x称J是I中变量x的下次引用信息同时,称x在点I是活跃的(因为在后面会被引用)7

3、/23/2021610代码生成获取基本块内每个变量的下次引用信息和活跃信息符号表中每个变量的记录项都有下次引用信息栏和活跃信息栏假设每个变量在出口处活跃,临时变量不活跃从基本块的出口处向前扫描每一条三地址语句具体步骤如下:7/23/2021710代码生成1、置初值,对每个变量置为“无下次引用”,“活跃”或“非活跃”2、从基本块出口向前扫描每条三地址代码(I:x:=yopz)(1)把变量x的下次引用信息和活跃信息附加到语句标号I上7/23/2021810代码生成(2)把变量x的下次引用信息栏和活跃信息栏分别置为“无下次引用”和“非活跃”(3)把变量y和z的下次引用信息

4、和活跃信息附加到语句标号I上(4)把变量y和z的下次引用信息栏置为“I”,活跃信息栏置为“活跃”7/23/2021910代码生成例子:(P539)基本块含有下面四条代码,A、B、C、D是变量,T、U、V是临时变量(1)T:=A-B(2)U:=A-C(3)V:=T+U(4)D:=V+U7/23/202110变量名下次引用信息活跃信息初值初值AF(2)(1)LLLBF(1)LLCF(2)LLDFFLFTF(3)FFLFUF(4)(3)FFLLFVF(4)FFLF7/23/20211110代码生成表中列从左向右变化是从后向前扫描三地址代码的结果,F表示“无下次引用”和“非

5、活跃”,L表示“活跃”标记了下次引用信息和活跃信息的三地址代码:(1)T[(3)L]:=A[(2)L]–B[FL](2)U[(3)L]:=A[FL]–C[FL](3)V[(4)L]:=T[FF]+U[(4)L](4)D[FL]:=V[FF]+U[FF]7/23/20211210代码生成简单代码生成算法只考虑一个基本块范围内的目标代码生成寄存器描述器(针对每个寄存器)——记录每个寄存器的当前内容地址描述器(针对每个运行时刻名字)——记录每个名字存放的一个或多个地址寄存器描述器和地址描述器的具体实现(采用何种数据结构)不考虑7/23/20211310代码生成算法:P53

6、7函数getregP538例子:P539example9.5Fig9.107/23/202114TheEnd!7/23/202115

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。