Compliers note–chapter one

一、语言处理器

  • 编译器:把某语言写的程序翻译为等价的用另一种语言写的程序
  • 解释器:直接利用用户提供的输入执行源程序中指定的操作
  • 区 别

    编译器产生的机器语言目标程序通常比一个解释器快很多

    解释器的错误诊断效果通常比编译器更好,因为它逐个语句的执行源程序

  • 预处理器:把源程序聚合在一起,将宏转换成源语言

  • 汇编器 : 把汇编语言汇编成 可重定位机器代码
  • 链接器: 大型程序经常被分成多个部分编译,可重定位的机器代码有必要和其他可重定位的目标文件以及库文件链接到一起,一个文件中的代码可能指向另一个文件中的位置,链接器可以解决外部内存地址的问题。
  • 加载器:把所有可执行目标文件放到内存中执行

二.一个编译器的结构

编译的过程可分为两个部分: 分析部分(前端)和综合部分(后端

  • 前端 : 把源程序分解成为多个要素,并在这些要素上加语法结构,检查语法错误,创建中间表示,构建符号表

前端图

  • 后端: 根据中间表示和符号表中的信息来构造用户期待的目标程序

    后端图

Comments

⬆︎TOP