HNU_Compiler Principles_Introduction

课程考评:

(1) 一班分6组,15min/组,报告10min,讨论5min;也可以调整为合2为1,30分钟/组

(2) 每个学生每堂讨论课后,写总结(电子稿)交给老师;

  (3) 小班讨论主题:

 

 

 实验安排:

  4次,从8个实验中选4个;

  每人独立完成,并通过测试;

  提交:

    实验报告打印稿、电子版

    源代码、测试样例电子版

  参考编译器:tiny编译器,源代码见课程中心

 

第一章 绪论

1.编译的含义:

  -机器语言

  -高级程序语言

2.编译过程和环节

3.编译器的构造方法学:模型、算法、工具

4.编译技术的广泛应用

5.程序语言的种类

6.程序设计语言基础

 

计算机(CPU+存储器)与机器语言:计算要快!

  数据->输入->CPU->进行运算,输出->存储器(单元地址)

 

 

 快的途径:

  提高单个CPU做事的速度。把电路做的越小,越灵敏,微电子技术:摩尔定理

 

 

  采用并行处理策略:多核CPU,多线程,集群系统

  第二种策略的发挥是有条件的:提交的计算任务要有并行性,如果是串行性计算任务,并行没有意义;

 

因此,分析并提取任务中的并行性,构建并行执行的机器代码,是编译器中要考虑的重要问题,编译技术的高级话题。

 

计算机的特点:

CPU与存储器的不协调,CPU很快,存储器的速度慢得多

则存储器分为了多种,【从左到右依次变大】

  1.寄存器Register(最快)2.缓存Cash 3.内存 4.磁盘

 

因此,寄存器的分配,是一个编译器要考虑的另一重要问题。

 

高级程序语言VS机器语言

高级程序语言特点:

  概念与概念之间的逻辑关系表达

  变化和相互作用的时序和逻辑关系表达:流程与控制

    条件 if;互斥的离散事件:switch;循环:for,while

  直观表达,易于理解,简洁,易于掌握,修改;

  满足人处理的要求:

    追求的目标:

      易懂,通用(与计算机型号无关性),鲁棒(可靠),

 

 

      重用(组件化,可装配性,互操作能力;

机器语言的特点:

  1.代码和数据的存储;2.数据的运算传输;3.控制指令:跳转

  满足机器处理的要求:

    概念单一:指令,数据,地址

    每句的含义单一;

    代码很长;

    多句综合难以理解;

    指令、存储器地址很多;

 

 编译技术的含义

  译:翻译,然后优化

    策略:高级语言->通用机器语言->优化->特定机器语言->优化;

  翻:编译器构建方法学:使用模型,算法,工具

    策略:用程序生成程序:

      编译器构造工具+简单的表达式  --》编译器

编译过程:(符号表)7步

分为前端和后端,

  前端不需要考虑目标机型,后端只需要通用机器代码转变成目标机器特定代码

 

  特点:彼此之间相互独立,又可对接,前提:中间代码有国际标准

 

 

词法分析/扫描

  • 高级语言程序由句子串联而成,句子由词素(lexeme)串联而成
  • 词素分为两类:预定义符(保留字,标点符,运算符)和自定义符;
  • 词法单元 (token)

语法分析

语义分析

中间代码生成  

  根据语义分析的输出,生成通用机器语言,也叫中间表示,例如:三地址码

 

中间代码优化

目标代码生成

目标代码优化

编译中优化的价值

3.编译器构造方法学:

  就事论事:代价高,时间长,隐患多,脆弱

  编译器构造工具

4.编译技术的广泛应用

  技术应用

  方法学

posted @ 2020-02-17 16:07  Comet_Fei  阅读(173)  评论(0编辑  收藏  举报