学时数及其分布课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《学时数及其分布课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学时 及其 分布 课件
- 资源描述:
-
1、 代码生成器的输入包括中间代码和符号表中的信息代码生成器的输入包括中间代码和符号表中的信息。目标代码一般有以下三种形式:目标代码一般有以下三种形式:(1 1)能独立执行的机器语言代码,所有地址均以定位)能独立执行的机器语言代码,所有地址均以定位(代真)(代真)。(2 2)待装配的机器语言模块。当需要执行时,由连接)待装配的机器语言模块。当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码。执行的机器语言代码。(3 3)汇编语言代码,尚须经过汇编程序汇编,转换成)汇编语言代码,尚须经过汇编程序汇编,转换成可执行的机器代
2、码。可执行的机器代码。代码生成器着重考虑两个问题代码生成器着重考虑两个问题:一是如何使生成的一是如何使生成的目标代码较短;另一个是如何充分利用计算机的寄存目标代码较短;另一个是如何充分利用计算机的寄存器,减少目标代码中访问存储单元的次数。这两个问器,减少目标代码中访问存储单元的次数。这两个问题直接影响代码的执行速度。题直接影响代码的执行速度。基本问题基本问题:所有代码生成器都要面对何种中间代码输入所有代码生成器都要面对何种中间代码输入,(是式逆波兰,四元式,还是三元式?等问(是式逆波兰,四元式,还是三元式?等问题)题)何种代码做为目标程序何种代码做为目标程序,选择适当的代码指令选择适当的代码指
3、令,最最优的寄存器分配方案优的寄存器分配方案,和计算顺序等基本问提和计算顺序等基本问提.为此本书见立了目标机器模型为此本书见立了目标机器模型:并把中间代码对应的目并把中间代码对应的目标代码做了规定标代码做了规定.利用待用信息利用待用信息,寄存器描述数组寄存器描述数组RVALUE,RVALUE,变量地址描述数组变量地址描述数组AVALUEAVALUE等概念建立了代码生等概念建立了代码生成算法成算法.P316 P316例例1111。22同学们应该好好研究。同学们应该好好研究。P317 P317 表表1111。4 4 各中间代码对应的目标代码应该背过各中间代码对应的目标代码应该背过。寄存器分配:利用
4、执行代价的概念说明如何建立更佳寄存器分配:利用执行代价的概念说明如何建立更佳的寄存器分配方案。的寄存器分配方案。对于循环对于循环L L中某变量中某变量M M,如果分配一个寄存器给它,如果分配一个寄存器给它专用,那么,每执行循环一次,执行代价的节省数可专用,那么,每执行循环一次,执行代价的节省数可用公式(用公式(1111。1 1)计算。这个计算公式应该掌握。)计算。这个计算公式应该掌握。例例11。3图图11。4代表某程序的最内层循环,其中无条代表某程序的最内层循环,其中无条件转移和条件转移指令均以改用箭头来表示。各基本件转移和条件转移指令均以改用箭头来表示。各基本块入口之前和出口之后的活跃变量已
5、列在图中。假定块入口之前和出口之后的活跃变量已列在图中。假定R0,R1和和R2三个寄存器在该循环中将固定分配给某三个三个寄存器在该循环中将固定分配给某三个变量使用。现在,我们利用公式(变量使用。现在,我们利用公式(11。1)计算各变量)计算各变量的执行代价节省数,并且取执行代价节省数最高的来的执行代价节省数,并且取执行代价节省数最高的来确定这三个变量。确定这三个变量。解:因为解:因为B1中引用中引用a前已对前已对a定值,所以定值,所以use(a,B1)=0;在在B2,B3中中a被各引用一次,且在引用前未对被各引用一次,且在引用前未对a定值,定值,所以所以use(a,B2)=use(a,B3)=
6、1;B4中未引用中未引用a,所以,所以use(a,B4)=0.因为因为a在在B1中被定值且中被定值且a在在B1出口是活跃的,出口是活跃的,a在在B2,B3和和B4出口后不是活跃的则:出口后不是活跃的则:live(a,B1)=1 Live(a,B2)=live(a,B3)=live(a,B4)=0;所以代价节省数所以代价节省数为:为:1+1+2*1=4。同样可以算出同样可以算出b,c,d,e,f 的执行代价节省数分别为:的执行代价节省数分别为:6,3,6,4,4。按照代价节省数的大小我们把寄存器。按照代价节省数的大小我们把寄存器R0分配给分配给d,R1分配给分配给b;a,e,f 的执行代价相同的
7、执行代价相同,可人选可人选其一将其一将R2分配给分配给a.DAG的目标代码的目标代码 为了生成更有效的目标代码,要考虑的另一个问题是,为了生成更有效的目标代码,要考虑的另一个问题是,对基本块中中间代码序列,我们应按怎样的次序来生对基本块中中间代码序列,我们应按怎样的次序来生成其目标代码呢?本节成其目标代码呢?本节P323给出了利用基本块的给出了利用基本块的DAG图给出了基本块中中间代码序列排序的方法,以便生图给出了基本块中中间代码序列排序的方法,以便生成较优的目标代码。成较优的目标代码。下面我们学习一个例子,一加深其理解:下面我们学习一个例子,一加深其理解:例例11。6 考察下面中间代码序列考
展开阅读全文