1编译原理第十一章代码生成2第十一章代码生成目标代码形式代码生成着重考虑的问题一个简单代码生成器待用信息活跃信息寄存器描述信息变量地址描述信息代码生成算法3代码生成算法对每个四元式: i: A:=B op C,依次执行: 1 以四元式: i: A:=B op C 为参数,调用函数过程GETREG(i: A:=B op C),返回一个寄存器R,用作存放A的寄存器。 2 利用AVALUE[B]和AVA
2. 目标代码生成中的有关问题(1) 目标机目标语言的确定(2) 语言结构目标代码的确定(3) 运行时刻存储管理(4) 寄存器分配(5) 求值顺序的选择(6) 代码生成程序的设计 指令格式: Op R C (立即-----寄存器) Op R2 d(R1) (存储器-----寄存器) Op R1 R2 (寄存器-----寄存器) 几个常见
1编译原理第十一章代码生成2词法分析器语法分析器语义分析与中间代码生成器优化段表格管理出错处理目标代码生成器编译程序总框3第十一章代码生成基本问题目标机器模型一个简单代码生成器4第十一章代码生成基本问题目标机器模型一个简单代码生成器5代码生成代码生成把语法分析后或优化后的中间代码变换成目标代码目标代码的三种形式绝对指令代码:能够立即执行的机器语言代码,所有地址已经定位可重新定位指令代码:待装配的机
JMP无条件转移到第二地址指定的内存单元JMPNEG若FlagReg中的值<0转移到第二地址指定的内存单元JMPPOS若FlagReg中的值>0转移到第二地址指定的内存单元JMPZERO若FlagReg中的值0转移到第二地址指定的内存单元HALT终止程序执行②第一地址为寄存器(R0-R3)③寻址方式和第二地址直接地址寻址(M)Load Ri MXX(XX)→RiXX范围0-255(第0页)用16
单击此处编辑母版标题样式单击此处编辑母版标题样式 第9章 目标代码生成 编译程序最后一个阶段是目标代码生成它通常在语义分析后或者优化后的中间代码上进行并将中间代码转化为等价的目标代码 本章主要介绍 简单代码生成器的设计和构造方法 9.1 概述我们知道编译程序的最终目的是将源程序翻译成等价的目标程序为了达到此目的编译程序除了对源程序进行词法分析语法分析和语义分析外还必需将语义分析后或者优
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级第7章 目标代码生成 目标代码生成是指把语法分析或优化后的中间代码变换成目标代码目标代码一般有如下形式: (1)能立即执行的机器语言代码如 或.EXE文件 (2)待装配的机器语言模块其地址为相对地址不能直接执行当需要执行时由连接装配程序把它们和其它运行程序和库函数连接起来装配
??? ?? ??? ????? ??? ???? ?????啊?? ???? ??啊?? ????? ??编译原理代码生成授课:胡静42020222004年12月28日1编译器的结构出错处理语法分析程序语义分析程序目标代码生成程序词法分析程序中间代码生成程序代码优化程序表格管理42020222编译原理概述代码生成阶段的功能输入:编译器前端生成的中间表示(IR)和相关的符号表信息输出:语义等价的目
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级代码生成代码生成代码生成的输入-各种中间代码形式目标代码与目标机器模型简单的代码生成器基本块DAG图及代码生成目标代码绝对地址目标代码可重定位的目标- linkerloader汇编代码- assembler目标机器模型指令形式op 源目的寻址模式- 绝对地址:op M R ? R op (M)?R- 寄存器:op R1R2
#
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级代码生成(I)代码生成代码生成目标-任务-设计目标机器模型基本块与流图简单的代码生成器寄存器分配与指派树重写与动态规划代码生成技术代码生成目标与任务代码生成器的位置代码生成器的任务指令选择寄存器分配与指派指令排序源程序前端中间代码代码优化器中间代码代码生成器目标代码代码生成器设计中若干问题输入形式三地址码: x = y z
违法有害信息,请在下方选择原因提交举报