大侠素材铺

Similar documents
PowerPoint Presentation

<4D F736F F F696E74202D20B5DA31D5C220D2FDC2DB2E BD6BBB6C15D205BBCE6C8DDC4A3CABD5D>

Microsoft PowerPoint - ch1.ppt [兼容模式]

Microsoft Word _2 課本1225_OK_0222修.doc

大侠素材铺

02

Microsoft Word 電腦軟體設計.doc

天津天狮学院关于修订2014级本科培养方案的指导意见

大连软~1

Microsoft PowerPoint - compiler

PowerPoint Presentation

PowerPoint 演示文稿

壹、

Microsoft PowerPoint - 1-Introduction.ppt

2/80 2

摘 要 在 這 忙 碌 的 社 會 中, 普 遍 人 們 運 動 時 間 其 實 並 不 充 裕, 體 力 越 來 越 差 的 情 況 下 還 隨 意 飲 食 導 致 身 體 健 康 越 來 越 差, 因 此 本 專 題 打 算 利 用 健 康 飲 食 的 方 式 改 善 這 些 人 的 體 質,

编译技术 Compiler Principles 课程总结 湖南大学信息科学与工程学院软件工程系杨金民 2019/06

“百企入校——广西青年企业家协会高校

实践 : 能够独立设计和开发简单语言的编译器 课程意义 : 1. 本课程能使学生对编程语言的设计和实现有深刻的理解, 对和编程语言有关的理论 ( 形式语言和自动机理论 类型论等 ) 有所了解, 对宏观上把握编程语言来说, 起一个奠基的作用 2. 对软件工程来说, 编译器是一个很好的实例 ( 基本设计

大侠素材铺

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

Microsoft PowerPoint - 1-Introduction12.ppt [兼容模式]

附件2

Microsoft PowerPoint - 1-Introduction09.ppt

第五章 重叠、流水和现代处理器技术

Workbook_Chinese copy.pdf

大侠素材铺

什么是函数式编程?


2 0 1 我的假日生活 我的假日生活 蔡宇薰 王歆語 今天我和媽媽去動物玩 到了中午我們去買麵包吃 吃完麵 包後我們就慢慢的走上去了 接著我們就看到鴕鳥 袋鼠 大象等 動物 我們走到企鵝館看一看企鵝們就走了 我們走著走著到了爬 蟲館又再走個幾步就到了一家點心店 我們就買了一

Microsoft PowerPoint compiler [Compatibility Mode]

软件工程技术知识体系 机器学习 / 神经网络 (AI) 不确定性 ( 黑盒, 概率 ) 编译技术 灵活多变, 但有基因 数据库技术 联系 组合, 摘取 基础技术 联线 : 直观易懂 分布式系统面向对象编程计算机网络操作系统数据结构 2

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

untitled

6 2 2 MMO 1 Arcade 2 iphone 4 1 Blog [Monkey Potion] 02

GTIN EPC GTIN EPC...4 GTIN GTIN GTIN GTIN UCC EAN/UCC EAN/UCC-14.

CC213

電機工程系認可證照清單 /7/1

Microsoft Word - 認識減重手術 注意後遺症.doc

A9RF716.tmp

2007 CS Part 05: (ONO, Kouichi)

Undergraduate Schedule Course For Clinical Medicine on Jiangsu University

编译原理与技术

epub83-1

<4D F736F F D20B9E3B6ABCDE2D3EFCDE2C3B3B4F3D1A7C4CFB9FAC9CCD1A7D4BA BDECB1CFD2B5C9FABECDD2B5D6CAC1BFB1A8B8E62E646F63>

Untitiled

中艺华海修改1.7.indd

北 京 蓝 皮 书 公 共 服 务 相 比 而 言, 养 老 医 疗 失 业 等 保 险 都 早 已 经 由 国 务 院 颁 布 了 相 应 的 立 法 条 例, 在 全 国 范 围 内 形 成 了 统 一 的 制 度 党 的 十 八 届 四 中 全 会, 首 次 以 依 法 治 国 为 主 题,

2006年中央、国家机关公务员录用考试


untitled

封面.PDF

untitled


(Microsoft Word - \244g\246a\247B\244\275\253H\245\365\244\247\275\325\254d\254\343\250s doc)

学校编码 :10384 分类号 密级 学号 : UDC 学位论文 Gödel 语言编译系统前端部分设计与实现 Design and Implementation in the front part of Gödel compiler system 王啸澜 指导教师 : 赵致琢教授

OSI OSI 15% 20% OSI OSI ISO International Standard Organization 1984 OSI Open-data System Interface Reference Model OSI OSI OSI OSI ISO Prototype Prot

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

01

Microsoft Word - 梁斌言:2016年度全省职业教育工作会议总结讲话提纲.doc

中 共 广 元 市 食 品 药 品 监 督 管 理 局 党 组 2016 年 机 关 党 的 工 作 要 点 2016 年 是 实 施 十 三 五 规 划 的 开 局 之 年, 是 推 进 全 面 从 严 治 党 的 深 化 之 年, 是 决 胜 脱 贫 攻 坚 的 关 键 之 年 机 关 党 的

“秦火火”玩“火”自焚

目 录 第 1 章 毕 业 生 就 业 基 本 情 况 沈 阳 化 工 大 学 科 亚 学 院 概 况 毕 业 生 规 模 毕 业 生 结 构 毕 业 生 院 系 分 布 毕 业 生 专 业 分 布

0卷首语.FIT)

版块一 研究生学长对《自然地理学》科目的总结

北 京 化 工 大 学 2014 年 毕 业 生 就 业 质 量 年 度 报 告 高 校 毕 业 生 就 业 工 作 是 教 育 领 域 重 要 的 民 生 工 程, 涉 及 人 民 群 众 切 身 利 益, 关 乎 社 会 和 谐 稳 定 北 京 化 工 大 学 高 度 重 视 毕 业 生 就 业

2014年9月月讯

( 一 ) 毕 业 生 规 模 和 就 业 率 浙 江 警 察 学 院 2014 届 毕 业 生 共 计 542 人, 均 为 本 科 毕 业 生, 其 中 浙 江 省 内 生 源 毕 业 生 516 人, 西 藏 自 治 区 生 源 毕 业 生 26 人 截 至 2014 年 12 月 10 日,

1

就业质量报告工作方案

内 蒙 古 大 学 创 建 于 1957 年, 是 新 中 国 成 立 后 党 和 国 家 在 少 数 民 族 地 区 创 建 最 早 的 综 合 大 学 学 校 1962 年 招 收 研 究 生,1978 年 被 确 定 为 全 国 重 点 大 学,1984 年 获 博 士 学 位 授 权,199

目 录 学 校 概 况... 1 报 告 说 明... 1 第 一 章 毕 业 生 就 业 基 本 情 况... 3 一 毕 业 生 的 规 模 和 结 构... 3 ( 一 ) 毕 业 生 的 规 模... 3 ( 二 ) 毕 业 生 结 构... 4 二 就 业 率... 5 ( 一 ) 总 体

南昌职~1

的 通 知 (30) 安 阳 市 人 民 政 府 办 公 室 关 于 印 发 代 市 长 王 新 伟 在 市 长 办 公 会 议 上 讲 话 的 通 知 (33) 大 事 记 安 阳 市 人 民 政 府 大 事 记 (2015 年 11 月 ) (38) 安 阳 市 人 民 政 府 大 事 记 (2

关于成立化学化工学院石油炼制系和应用化学系的通知

<4D F736F F D C4EAD6D0BFBCD3EFCEC4C6C0BCDBD6B8C4CFA3A8B6A8B8E5A3A92E646F63>

中机质协[2016]2

前 言 厦 门 南 洋 职 业 学 院 是 经 福 建 省 人 民 政 府 批 准 正 式 设 立 国 家 教 育 部 备 案 具 有 独 立 颁 发 国 家 承 认 学 历 文 凭 资 格 的 全 日 制 综 合 性 普 通 高 等 院 校, 由 海 内 外 热 心 教 育 的 十 五 位 学 者

目 录

Microsoft Word - 会行党_2016_3号.doc

标题

令行立即行 上马就扬蹄

一 指 导 思 想 全 面 贯 彻 党 的 十 八 大 和 十 八 届 三 中 四 中 五 中 全 会 精 神, 深 入 学 习 习 近 平 总 书 记 系 列 重 要 讲 话 精 神, 按 照 中 央 和 上 级 政 法 公 安 机 关 关 于 加 强 队 伍 建 设 的 有 关 要 求, 聚 焦

国 培 计 划 (2011) 义 务 教 育 骨 干 教 师 远 程 培 训 项 目 骨 干 培 训 者 培 训 工 作 总 结 全 国 中 小 学 教 师 继 续 教 育 网 ( 以 下 简 称 继 教 网 ) 在 国 培 计 划 (2011) 义 务 教 育 骨 干 教 师 远 程 培 训 项

绝版亲情

取 企 业 一 套 表 平 台 收 集 汇 总 整 理 和 提 供 有 关 调 查 的 统 计 数 据, 综 合 整 理 和 提 供 旅 游 科 技 教 育 文 化 卫 生 体 育 社 会 保 障 公 用 事 业 等 全 区 性 基 本 统 计 数 据 6 组 织 实 施 基 本 单 位 能 源 投

Administrator

< C4EAD0C2CEC5B1A8B5C0CCE2C2BC>

标题

有 两 室, 外 加 一 个 很 小 的 房 间 和 一 个 小 厨 房 不 过 在 当 时 的 湖 边 坊, 这 就 相 当 于 一 幢 高 级 别 墅, 非 常 引 人 注 目 和 招 人 嫉 妒 姨 妈 和 姨 父 共 有 三 个 儿 子 和 一 个 女 儿 老 大 夏 天 强 比 我 大 7

金 山 区 青 年 创 新 创 业 示 范 区 的 建 议 进 行 专 门 答 复 朱 波 委 员 提 出, 创 新 创 业 的 主 体 是 青 年, 要 集 聚 教 育 科 研 人 才 资 本 等 各 类 资 源 和 优 势, 加 快 建 设 青 年 创 新 创 业 示 范 区, 在 政 策 体

趋 61 中 国 必 须 创 新 新 教 育 价 值 观 刘 道 玉 64 学 校 常 规 管 理 的 常 与 新 李 瑾 瑜 69 教 育 就 要 宽 柔 养 育 王 立 志 目 录 阅 读 72 全 民 阅 读 应 成 为 国 家 战 略 朱 永 新 77 一 世 读 书 抵 封 侯 陈 先 达

Microsoft Word - 第三期简报1.doc

山东体育学院

标题

目 录 学 校 概 况... 1 报 告 说 明... 2 第 一 章 毕 业 生 就 业 基 本 情 况... 3 一 毕 业 生 基 本 情 况... 3 ( 一 ) 本 与 科 毕 业 生 人 数 不 比 例... 3 ( 二 ) 各 系 毕 业 生 人 数 分 布... 3 ( 三 ) 毕


吉林师范大学博达学院

综合练习与检测八下.tpf

简 讯 : 庐 江 县 气 象 监 测 预 警 中 心 主 体 结 构 顺 利 封 顶 肥 西 县 政 府 出 台 乡 镇 气 象 工 作 目 标 管 理 考 核 细 则 庐 江 县 组 织 召 开 乡 镇 气 象 灾 害 防 御 工 作 会 议 长 丰 县 局 积 极 组 织 开 展 无 偿 献

Transcription:

编译原理与技术 导论 计算机科学与技术学院 李诚 03/09/2018

主要内容 课程设置情况 编译器的由来与挑战 编译器的构造 2/45

课程设置 时间 : 每周一 (6,7) 四 (3,4) 地点 :3B201 课程主页 ( 课件 试题等 ): http://staff.ustc.edu.cn/~chengli7/courses/co mpiler18/ 邮件列表 : 我们会自动将大家的邮箱加入 QQ 讨论群 : 把编译进行到底 ( 群号 :851075885) 3/45

教师 李诚 ( 先进数据系统实验室, 研究方向 : 大规模 实时 高可靠分布式系统 ) Contact: chengli7@ustc.edu.cn Official Hours: 每周一 12:00 13:30 地点 : 东校区高性能中心 503 4/45

助教团队 白有辉 ( 博一 ) byh0912@mail.ustc.edu.cn 王佳玮 ( 研二 ) wang.jw@yahoo.com 邵新洋 ( 研二 ) sxy799@mail.ustc.edu.cn 王一多 ( 研一 ) duo@mail.ustc.edu.cn 许冠斌 ( 研一 ) Web manager 5/45

参考资料 教材和参考书 陈意云 张昱, 编译原理 ( 第 3 版 ), 高等教育出版社,2014 A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, 2nd edition, Addison-Wesley, 2007 A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman 著, 赵建华等译, 编译原理, 机械工业出版社,2017 其他资料 Stanford 课程主页 http://web.stanford.edu/class/cs143/ MIT 课程主页 : http://6.035.scripts.mit.edu/fa18/ 6/45

考核要求 (Tentative) 考核内容包括理论学习和工程实践 理论学习 (20%): 按时上课 ( 特殊情况不能来需要书面请假 ) 按时完成课后书面作业 工程实践 (40%): 以组队 (<=3 人 ) 完成若干项目 (>=4) 完成一个简单的编译器 每个项目要求提交代码 + 文档 通过 git commit 来评估同组人员的工作量 考试 (40%): 期中 (TBD, 可以是开卷 ) 期末 (TBD, 可以是开卷 ) 7/45

主要内容 课程设置情况 编译器的由来与挑战 编译器的构造 8/45

编程语言 什么是编程语言? A programming language is a notation for describing computations to people and to machines. 每种编程语言有自己的计算模型 过程型 (Procedural): C, C++, C#, Java 声明型 (Declarative): SQL, 逻辑型 (Logic): Prolog, 函数式 (Functional): Lisp/Scheme, Haskell, ML, Ocaml, 脚本型 (Scripting): AWK, Perl, Python, PHP, Ruby, 9/45

求最大公约数 gcd 10/45

快速发展的编程语言 PYPL Index is created by analyzing how often language tutorials are searched on Google. 11/45

从无到有, 由弱到强 1954 年 IBM 研发了 704 机 但是, 软件开发的成本超过了硬件 所有的程序均由汇编语言开发 12/45

FORTRAN I John Backus (1977 图灵奖 ) 巴科斯范式 (Backus Naur Form) 基本想法 : 将高级语言翻译为低级语言 开发时间减半 对计算机科学影响巨大 诞生了许多理论研究成果 现代编译器还保留了 FORTRAN I 的大概架构 13/45

为什么需要编译器? 编译器使得开发者可以使用容易理解和掌握的高级语言, 而非晦涩的机器指令 可移植性 模块化 简单化 编程效率高 程序开销小 效率高 是不可或缺的编程工具 同时也是最复杂的系统软件之一 14/45

C 程序的编译过程 C 源程序 预处理器 Preprocessor (cpp).i 连接器 Linker (ld) 目标文件.o 库代码 Library routines 输入 机器代码 Machine code C 编译器 Compiler (cc) 汇编.s 汇编器 Assembler (as) 输出 15/45

编译器面临的挑战 计算机是不断进化的 体系结构的改变 编译器的改变 新的特征产生新的问题 语言也在不断演化 C - C90, C99, C11; C++ - 1998, 2003, 2006, 2011, 2014 新的语言不断诞生 :Go (2009), Rust (2010), Elixir (2011), Swift (2014) 16/45

编译器是学科交叉的产物 计算机理论 有限自动机, 文法, 数据流 算法 树 / 图的遍历和修改, 动态规划 数据结构 符号表, 抽象语法树, 图 系统 内存空间分配与命名, 多趟系统, 编译器的构造 17/45

编译器是学科交叉的产物 体系结构 内存层次, 指令选择, 并行 安全 寻找漏洞和攻击防御 软件工程 软件开发环境, 调试 人工智能 启发式代码优化 18/45

主要内容 课程设置情况 编译器的由来与挑战 编译器的构造 19/45

编译器是什么? 输入 源程序 编译器 Compiler 目标程序 输出 20/45

编译器的输入 标准的指令式语言 (Java, C, C++) 状态 变量 结构 数组 计算 表达式 (arithmetic, logical, etc.) 赋值语句 条件语句 (conditionals, loops) 函数 21/45

编译器的输出 状态 寄存器 内存单元 机器码 load/store architecture Load, store instructions 寄存器操作 Arithmetic, logical operations 分支指令 Branch instructions 22/45

编译器的构造 / 阶段 Lexical 词法分析器 Source code 源程序 Token Stream 记号流 Symbol Table 符号表 23/45

编译器的构造 / 阶段 Lexical 词法分析器 语法分析器 Source code 源程序 Token Stream 记号流 Tree 语法树 Symbol Table 符号表 24/45

编译器的构造 / 阶段 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Symbol Table 符号表 25/45

编译器的构造 / 阶段 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Symbol Table 符号表 26/45

编译器的构造 / 阶段 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Symbol Table 符号表 27/45

编译器的构造 / 阶段 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Code Gen. 代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Target code 目标程序 Symbol Table 符号表 28/45

编译器的构造 / 阶段 Front end 前端 Back end 后端 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Code Gen. 代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Target code 目标程序 Symbol Table 符号表 29/45

词法分析 人类在理解自然语言时, 首先要识文断字 This line is a longer Sentence article noun verb article adjective noun 30/45

词法分析 将程序字符流分解为记号 (Token) 序列 形式 :<token_name, attribute_value> position = initial + rate 60 词法分析器 字符流 符号表 1 2 3 position initial rate......... id, 1 = id, 2 + id, 3 60 记号流 31/45

编译器的构造 / 阶段 Front end 前端 Back end 后端 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Code Gen. 代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Target code 目标程序 Symbol Table 符号表 32/45

语法分析 人类在理解自然语言时, 其次要理解句子结构 This line is a longer Sentence article noun verb article adjective noun subject object sentence 33/45

语法分析 也称为解析 (Parsing), 在词法记号的基础上, 创建语法结构 id, 1 = id, 2 + id, 3 60 记号流 语法分析器 = id, 1 + id, 2 id, 3 60 语法树 符号表 position... initial... rate... 34/45 1 2 3

编译器的构造 / 阶段 Front end 前端 Back end 后端 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Code Gen. 代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Target code 目标程序 Symbol Table 符号表 35/45

语义分析 人类在理解自然语言时, 最后要理解句子的含义 Jack said Jerry left his assignment at home. What does his refer to? Jack or Jerry? 36/45

语义分析 编译器会检查程序中的不一致 如 : 类型检查 (type checking) = + 语法树 id, 1 id, 2 id, 3 60 1 2 3 符号表 position... initial... rate... 语义分析器 = id, 1 + 语法树 id, 2 id, 3 inttofloat 60 37/45

编译器的构造 / 阶段 Front end 前端 Back end 后端 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Code Gen. 代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Target code 目标程序 Symbol Table 符号表 38/45

中间代码生成 是源语言与目标语言之间的桥梁 1 2 3 符号表 position... initial... rate... = + 语法树 id, 1 id, 2 id, 3 inttofloat 中间代码生成器 60 t1 = inttofloat(60) t2 = id3 t1 t3 = id2 + t2 中间代码 id1 = t3 39/45

编译器的构造 / 阶段 Front end 前端 Back end 后端 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Code Gen. 代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Target code 目标程序 Symbol Table 符号表 40/45

代码优化 机器无关的代码优化便于生成执行时间更快 更短或能耗更低的目标代码 1 2 3 符号表 position... initial... rate... t1 = inttofloat(60) t2 = id3 t1 t3 = id2 + t2 id1 = t3 中间代码 代码优化器 t1 = id3 * 60.0 id1 = id2 + t1 中间代码 41/45

编译器的构造 / 阶段 Front end 前端 Back end 后端 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Code Gen. 代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Target code 目标程序 Symbol Table 符号表 42/45

代码生成 如果目标语言是机器代码, 必须为变量选择寄存器或内存位置 1 2 3 符号表 position... initial... rate... t1 = id3 * 60.0 id1 = id2 + t1 中间代码 代码生成器 LDF R2, id3 MULF R2, R2, #60.0 LDF R1, id2 汇编代码 ADDF R1, R1, R2 STF id1, R1 43/45

编译器的构造 / 阶段 Front end 前端 Back end 后端 Lexical 词法分析器 语法分析器 Semantic 语义分析器 Code Gen. 中间代码生成器 Code Optimizer 代码优化器 Code Gen. 代码生成器 Source code 源程序 Token Stream 记号流 Tree 语法树 Annotated Tree 带注解的语法树 Rep. 中间表示 Rep. 中间表示 Target code 目标程序 Symbol Table 符号表 44/45

编译原理与技术 导论 笋因落箨方成竹, 鱼为奔波始化龙 曾记少年骑竹马, 看看又是白头翁 出自 增广贤文