单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级代码生成(I)代码生成代码生成目标-任务-设计目标机器模型基本块与流图简单的代码生成器寄存器分配与指派树重写与动态规划代码生成技术代码生成目标与任务代码生成器的位置代码生成器的任务指令选择寄存器分配与指派指令排序源程序前端中间代码代码优化器中间代码代码生成器目标代码代码生成器设计中若干问题输入形式三地址码: x = y z
??? ?? ??? ????? ??? ???? ?????啊?? ???? ??啊?? ????? ??编译原理代码生成授课:胡静42020222004年12月28日1编译器的结构出错处理语法分析程序语义分析程序目标代码生成程序词法分析程序中间代码生成程序代码优化程序表格管理42020222编译原理概述代码生成阶段的功能输入:编译器前端生成的中间表示(IR)和相关的符号表信息输出:语义等价的目
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级代码生成代码生成代码生成的输入-各种中间代码形式目标代码与目标机器模型简单的代码生成器基本块DAG图及代码生成目标代码绝对地址目标代码可重定位的目标- linkerloader汇编代码- assembler目标机器模型指令形式op 源目的寻址模式- 绝对地址:op M R ? R op (M)?R- 寄存器:op R1R2
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级代码生成(III)代码生成代码生成目标-任务-设计目标机器模型基本块与流图简单的代码生成器寄存器分配与指派树重写与动态规划代码生成技术简单的代码生成器针对基本块的代码生成算法--逐个为基本块中三地址代码生成:可能的加载指令运算指令可能的保存指令机器指令形式
??? ?? ??? ????? ??? ???? ?????啊?? ???? ??啊?? ????? ??编译原理代码生成授课:胡静42020222004年12月28日1编译器的结构出错处理语法分析程序语义分析程序目标代码生成程序词法分析程序中间代码生成程序代码优化程序表格管理42020222编译原理5.1基本块的DAG表示(cont.)基本块的DAG表示使我们可以对基本块所代表的代码进行一些转
代码生成需要考虑的主要问题地址方式R间接索引(变址)T1:= AB MOV A R0T2:= CD ADD B R0T3:= E-T2 MOV C R1T4:= T1-T3 ADD D R1 MOV R0 T1
下次使用信息示例0非下次使用信息示例0非4活3活2活基本块内的局部优化:b0c0a从DAG中删除那些旁边没有附加活跃变量的根结点(即没有父结点的结点换言之其本身不再作为其他结点的子结点而出现)反复此过程删除所有对应死代码的结点 如有基本块代码如下: a = b c b = b – d c = c d e = b cbd0-DAG示例:数组访问y0从DAG重组基本块i0i
4返回9g的基本用法1.指定最终生成文件名的选项2.中间编译选项 3.错误和警告选项 4.将警告变成错误 5.优化代码 6.可移植性选项 2.中间编译选项222528优化虽然会给程序带来更加优异的表现但为什么编译器不直接产生最快最紧凑的代码呢原因是存在如下一些潜在的危险和问题读者必须清楚地意识到首先需对其不加任何优化选项地进行编译生成可运行代码 g -o a0 <Enter> time .a0
2. 目标代码生成中的有关问题(1) 目标机目标语言的确定(2) 语言结构目标代码的确定(3) 运行时刻存储管理(4) 寄存器分配(5) 求值顺序的选择(6) 代码生成程序的设计 指令格式: Op R C (立即-----寄存器) Op R2 d(R1) (存储器-----寄存器) Op R1 R2 (寄存器-----寄存器) 几个常见
piler北京航空航天大学计算机学院代码生成及优化北京航空航天大学计算机学院史晓华 博士 副教授计算机体系结构代码生成方法代码优化技术 参考书puter Architecture: A Quantitative Approach 3rd version By John L. Hennessy and David A. Patterson中文版:计算机体系结构量化研究方法清华郑维民等
违法有害信息,请在下方选择原因提交举报