编译原理学习笔记-1

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 编译程序构造

需要了解源语言,目标语言,编译方法。《编译原理》就是找到更好地方法进行编译。
声明:
–以上引自东南大学的编译原理课件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值