电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

编译原理-引论

22页
  • 卖家[上传人]:第***
  • 文档编号:51855325
  • 上传时间:2018-08-16
  • 文档格式:PPT
  • 文档大小:230.25KB
  • / 22 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、引论赵建华 南京大学计算机系 2009年2月课程内容 引论 编译器的总体结构 词法分析 语法分析 语法制导的翻译技术 中间代码生成 运行时刻环境 代码生成 机器无关优化编译器的作用 读入以某种语言(源语言) 编写的程序 输出等价的,用另一种语言 (目标语言)编写的程序。 通常目标程序是可执行的。 解释器 直接利用用户提供的输入, 执行源程序中指定的操作。 不生成目标程序,而是根据 源程序的语义直接运行。 Java语言的处理结合了编译 和解释。编译器的结构(1) 编译器可以分为分析部分和综合部分 分析部分(前端,front end) 把源程序分解成组成要素,并加上语法结构 使用这个结构创建源程序的中间表示 同时收集和源程序相关的信息,存放到符号表 综合部分(后端,back end) 根据中间表示和符号表信息构造目标程序 前端部分是机器无关的,后端部分是机器 相关的。编译器的结构(2) 编译器可分成顺序执行的一组步骤(phase)词法分析 词法分析/扫描(lexical analysis, scanning) 读入源程序的字符流,输出成为有意义的词素 (lexeme) token-name

      2、由语法分析步骤使用 attribute-value指向相应的符号表条目,由语义分析 /代码生成步骤使用 例子 position = initial + rate * 60 语法分析 语法分析/解析(syntax analysis/parsing) 根据各个词法单元的第一个分量来创建树形中 间表示形式。通常是语法树(syntax tree) 指出了词法单元流的语法结构。语义分析 语义分析(semantic analysis) 使用语法树和符号表中的信息,检查源程序是否满足 语言定义的语义约束。 同时收集类型信息,用于代码生成。 类型检查,类型转换。中间代码生成 根据语义分析的输出,生成类机器语言的中间表示 三地址代码: 每个指令最多包含三个运算分量 t1 = inttofloat(60); t2 = id3 * t1; t3 = id2 + t2;代码优化 通过对中间代码的分析,改进中间代码,得到更好 的目标代码 快、短、能耗低代码生成 把中间表示形式映射到目标语言 寄存器的分配 指令选择 内存分配其它概念 符号表管理 记录源程序中使用的变量的名字,收集各种属性 趟(PASS) 每趟读入

      3、一个输入文件,产生一个输出文件。 “步骤”是逻辑组织方式 “趟”和具体的实现相关 编译器构造工具 语法分析器,扫描器,语法制导的翻译引擎,程序设计语言的发展历程 历程 第一代:机器语言 第二代:汇编语言(宏命令) 第三代:Fortran,Cobol,Lisp,C,C+, 第四代:特定应用语言:NOMAD, SQL, Postscript 第五代:基于逻辑和约束的语言,Prolog、OPS5 强制式语言/声明式语言 前者指明如何完成,后者指明要完成哪些计算 冯.诺依曼语言/面向对象的语言/脚本语言程序设计语言和编译器之间的关系 程序设计语言的新发展向编译器设计者提 出新要求 设计相应的算法和表示方法来翻译和支持新的 语言特征 通过降低高级语言的执行开销,推动这些 高级语言的使用 编译器设计者还需要更好地利用新硬件的 能力。编译技术的应用(1) 高级程序设计语言的实现 高级程序设计语言的抽象层次的提高有利于编程,但 是直接生成的代码却相对低效率 聚合类型/高级控制流/面向对象/垃圾自动收集机制 针对计算机体系结构的优化 并行性:指令级并行,处理器层次并行 内存层次结构 新体系结构的设计 R

      4、ISC 专用体系结构 一个新的体系结构特征能否被充分利用,取决于编译 技术编译技术的应用(2) 程序翻译 二进制翻译/硬件合成/数据查询解释器/编译后 模拟 软件生产率工具 类型检查 边界检查 内存管理工具程序设计语言的基础概念(1) 静态/动态 静态:语言策略支持编译器静态决定某个问题 动态:只允许在程序运行时刻作出决定 Java类声明中的static指明了变量的存放位置可静态 确定。 作用域 x的作用域指程序的一个区域,其中对x的使用都指 向这个声明。 静态作用域:通过静态阅读程序决定作用域 动态作用域程序设计语言的基础概念(2) 环境与状态 环境:是从名 字到存储位置 的映射 状态:从内存 位置到它们的 值的映射程序设计语言的基础概念(3) 静态作用域和块结构 C族语言使用静态作用域。 C语言程序由顶层的变量、函数声明组成 函数内部可以声明变量(局部变量/参数),这些声 明的作用域在它出现的寒暑内 一个顶层声明的作用域包括其后的所有程序。 作用域规则基于程序结构,声明的作用域由它 在程序中的位置隐含决定。 也通过public、private、protected进行明确控制程序设计语言的基础概念(4) 块作用域的例子程序设计语言的基础概念(5) 参数传递机制 值调用 (call by value):对实在参数求值/拷贝,再 存放到被调用过程的形参的内存位置上。 引用调用(call by reference):实际传递的是实在参 数的地址。 名调用:早期使用,现在已经废弃。 例子 F(x) y = x+3; /根据不同的参数传递机制,生成不同的代码 程序设计语言的基础概念(6) 别名: 两个指针指向同一个位置的情况 导致看起来不同的形式参数实际上是对方的别 名。

      《编译原理-引论》由会员第***分享,可在线阅读,更多相关《编译原理-引论》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.