中国科学技术大学编译原理第1讲 编译原理概述
更新时间:2023-09-02 18:36:01 阅读量: 教育文库 文档下载
中国科技大学研究生编译原理课程
编译原理概述
中国科技大学研究生编译原理课程
第一章 引论 什么是编译程序? 翻译程序、解释程序和汇编程序 编译程序的组成结构 编译程序的生成 相关话题
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
语言翻译过程 算法描述,求某整数n的阶乘fact(n), n≥0 1 // n == 0 fact(n) = n * fact( n-1 ) // n! == n * (n-1)! 伪语言描述 fact(n) = if n ≤ 0 then 1 else n*fact(n-1)
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
语言翻译过程 高级程序设计语言描述,(如C语言) int fact( int n ) { if (n<= 0) return 1; else return ( n*fact(n-1)); }
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
语言翻译过程 输入命令 cc foo.cc 程序 foo.c Ansi C compiler cc Object file
库函数或 其它 object文 件
Linker/连接程序
a.out/可执行程序
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
语言翻译过程a.out/可执行程序 loader/装入程序 输入数据 计算机 计算结果
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
语言翻译过程 为何不设计直接运行高级语言的机器? 机器本身的指令系统(二进制) 语言本身扩展
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
什么是编译程序?源程序 S(高级语言)
编译程序 C
目标程序 T(机器语言)
目标程序 T 初始数据
运行系统计算机
计算结果
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
什么是编译程序? 源语言(程序)到目标语言(程序)的映射转换或者翻 译过程 系列转换(翻译)过程
源语言S
T1
…
Tn
目标语言T
中间语言
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
解释程序与汇编程序 均属于翻译程序源程序 S 初始数据 Interpreter/解释程序 计算结果
汇编程序 S’ 汇编语言
assembler/汇编程序
目标程序 T
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
.file"foo.c" .text .globl fact .type fact,@function fact: pushl %ebp movl %esp, %ebp subl $4, %esp cmpl $0, 8(%ebp) jg .L2 movl $1, -4(%ebp) jmp .L1 .L2: subl $12, %esp movl 8(%ebp), %eax decl %eax
C函数fact的汇编语言形式pushl call addl imull movl .L1: movl leave ret .Lfe1: .size fact,.Lfe1-fact .ident "GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)" -4(%ebp), %eax %eax fact $16, %esp 8(%ebp), %eax %eax, -4(%ebp)
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
编译程序的组成结构 词法分析阶段 语法分析阶段 语义分析、中间代码生成 优化阶段 目标代码生成
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
编译程序的组成结构program 前端 front end 与源语言有关 scanner parser semantics
后端 back end 与目标机相关
middle end optimizer
code generator
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
编译程序的组成结构 例子,
hoo.c: main() { float position, initial, rate;position = initial + rate * 60;
}
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
编译程序的组成结构 词法分析阶段-scanner 字符流 -> 记号流position = initial + rate * 60 scanner 字符流
id1 = id2 +标识符
id3
*
60
记号流
赋值运算符 标识符 加运算符 标识符 乘运算符 整型常量
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
编译程序的组成结构 语法分析阶段-parser 记号流 -> 分析树(语法树)id1 = id2 + id3 * 60 parser = id1 id2 id3国家高性能计算中心(合肥) 2015/11/19
记号流
+ *
语法树
6016
中国科技大学研究生编译原理课程
编译程序的组成结构 语义分析 语义树-带有语义信息的分析树(语法树) =id1 id2 id3 + *int float 进行类型 转换
60国家高性能计算中心(合肥) 2015/11/19 17
中国科技大学研究生编译原理课程
编译程序的组成结构 中间代码生成 形式多样 - 三地址码,p-code等 t1 := int_to_float( 60 ) t2 := id3 * t1 t3 := id2 + t2 id1 := t3
国家高性能计算中心(合肥)
2015/11/19
中国科技大学研究生编译原理课程
编译程序的组成结构 代码优化 得到“优化”后的中间代码;也可以在最后的代码生成 阶段实施“优化”t1 := rate * 60.0 position := initial + t1 // 直接用浮点数60.0 // 去除多余的 // 临时变量 较优化前,减少2条中间代码
国家高性能计算中心(合肥)
2015/11/19
正在阅读:
新目标英语九年级单词拼写总复习09-03
小学教师德育论文12-10
为民务实清廉:坚持群众路线的时代要求05-28
中国古代史复习(隋至清)06-08
课堂新坐标2014高考数学(理)二轮专题复习第1部分-专题5-第2讲06-10
快速成型技术与试题 - 答案07-09
公司销售2022年度个人工作计划范文03-25
统计学原理形成性考核册答案作业12-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 编译
- 原理
- 中国
- 概述
- 科学技术
- 大学
- 2014高考英语短文改错抓分练习(1)
- 2017上海交大翻译硕士学费多不多
- 超市门店目标管理与绩效考核制度
- 家乐福调查报告
- 常见急症及意外伤害现场救护
- 河南省三门峡市陕州中学2016届高三上学期第一次月考生物试卷【解析版】
- 怎样加强中学生思想道德建设
- hTERT、p53在胃癌及癌前病变中的表达及相关性研究
- 2010年社会工作者考试初级社会工作综合能力模拟冲刺试题及答案
- 宁夏省2016年上半年内科学正(副)中级职称模拟试题
- 2011届高三地理热点综合练习.
- 中国建筑设计行业发展前景及投资风险预测分析报告2015-2020年
- 《乡土中国》每章节概述
- 部编版第七单元自然情怀现当代散文学案(《故都的秋》《我与地坛》《荷塘月色》单元教学)
- 小学教学常规考核细则
- 部编人教版九年级道德与法治上册4.1夯实法治基石 优秀教案(含教学反思)
- 第七章 重要知识点(电路理论)
- SAP ABAP程序设计基础教程第2章SAP R3系统基本结构
- 娃哈哈AD钙奶市场营销环境分析
- 山东导游考试 政策法规 复习资料 详细