您的位置:首页 > 其它

编译原理学习笔记-1

2015-09-21 22:31 197 查看

1.1程序设计语言与编译

1)程序设计语言

-. 高级语言 :c,c++

-. 汇编语言 :有字母组合成命令符号。对于不同硬件机器,有不同的汇编语言,因为有不同的机器语言。

-. 机器语言 :只有0、1表示

高级语言执行步骤:将高级语言翻译成机器语言,然后运行机器语言得到结果

2)程序设计语言的转换,有两种方法

编译:将高级语言整个转换成低级语言

解释:对输入的一句语言解释,并执行马上得到执行结果,然后接收下一句。不产生目标程序。直观易懂但是效率低

编译的转换过程:

两个阶段:编译——执行



三个阶段:编译——汇编——运行



1.2编译程序

编译程序的工作

编译程序的过程和翻译自然语言类似。从单词,语句,语义,修改,草稿到定稿。

1. 词法分析

2. 语法分析

3. 语义分析和中间代码生成

4. 优化

5. 目标代码生成

词法分析:对输入的程序的字符串进行扫描和分解识别出一个个单词

语法分析:在词法分析的基础上根据语言的语法规则,把单词符号组成各类的语法单位:短语,子句,语句、过程、程序

语法分析的方法:

推导和归约

语义分析:使用语法树和符号表中的信息来检查源程序是否和语言定义的语义一致。

中间代码生成:源程序翻译成目标代码的过程。中间代码有多种形式。

优化:对前面产生的中间代码进行加工变换。以期产生更高效的目标代码。

目标代码生成:

- 绝对指令代码:可立即执行

-汇编指令代码: 通过汇编后才能运行

- 可重定位指令代码:先将个目标模块连接起来,确定变量、常数在内存的位置。

表格管理:

符号表:记录源程序中使用的变量的名字,并收集每个名字的各种属性

常数表:登记各类常量值

标号表:登记标号的定义与应用

入口名表:登记过程的层号

1.3编译程序的生成

1.3.1. 直接用机器语言编写编译程序

1.3.2. 用汇编语言编写编译程序

1.4 编译程序构造

需要了解源语言,目标语言,编译方法。《编译原理》就是找到更好地方法进行编译。

声明:

–以上引自东南大学的编译原理课件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: