编译原理笔记【第五章 编译概述】

第一节 语言的翻译

从高级语言到低级语言的翻译叫做编译
从汇编语言到机器语言的翻译叫做汇编
在这里插入图片描述

第二节 编译和解释

2.1 编译执行

程序的编译执行
先将源程序翻译成目标程序,再执行目标程序并得到结果
在这里插入图片描述

2.2 解释执行

  • 程序的解释执行
    直接由解释程序对源程序进行分析、执行并得到结果
    在这里插入图片描述

  • 优点
    解释执行无需生成独立的目标代码,比较容易实现,也更容易移植
    解释执行可以立即执行并得到结果,更加适合于动态语言交互式环境

  • 缺点
    解释执行再执行前必须先进行翻译,比编译执行要花去更多的时间
    解释执行边翻译边执行,无法进行更全面的优化,执行效率较低

2.3 区分编译和解释

  • 在操作系统中,程序执行的基本实体是什么?
    ---------------进程

  • 区别编译执行和解释执行的方式?
    -----检查进程(是目标程序还是解释程序)

    例如c程序的进程就是该程序.exe本身

    python程序的进程是python的解释器python.exe"yourApp.py"

第三节 编译的步骤

3.1 具体步骤

  • 逻辑上可以将编译过程分为两部分
    源程序的分析目标程序的合成

  • 具体
    (1) 词法分析
    (2) 语法分析
    (3) 语义分析和中间代码生成
    (4) 优化
    (5) 目标代码生成

3.2 符号表管理和出错处理

编译的每个步骤都可能涉及到“符号表管理”和“出错处理”。
符号表管理
对各种符号进行查询、建立和更新等操作

出错处理
对发现的错误进行提示、隔离或纠正等操作
在这里插入图片描述

3.3 一个C程序片段实例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述