编译器的整体过程简述

大纲

  • 编译器是什么
  • 编译器的处理过程
    • 头文件展开
    • 汇编文件
    • 二进制文件
    • Linking
  • 解释器是什么

编译器是什么

编译器就是一个软件,对开发者写好的文本文件进行一系列流程的处理,然后输出给机器执行的程序!

编译器的处理过程

这里说的是编译器将代码处理成执行文件的简要过程,并不是说编译器能做什么,毕竟编译器能做得事情还是有很多的;比如在编译之前dump一下类的memory layout之类的!

下文说的是以c++的编译过程做一个大致的说明!

  • 头文件展开
  • 汇编文件
  • 二进制文件
  • Linking

以上三个可以在c++编译中有说明!

一般而言,编译器会分为编译器前端中间代码优化编译器后端

编译器前端包含预处理词法分析语法分析语义分析生成中间代码;

中间代码优化对编译器生成的中间代码进行一些优化,最终提供给编译后端;

编译后端根据不同的 cpu 架构,将中间代码汇编,产生汇编代码,最后解析汇编指令,生成目标代码,也就是机器码;

解释器是什么

解释器在读入编程语言的代码后,对读入的代码进行分析处理,解释器不像编译器编译器需要代码生成,然后即时编译并执行 AST,而解释器就可以立即开始执行程序分析,而不必编译。解释器是依托于开发平台的,所以开发设备上需要安装后程序才可以执行。

解释器通常可以处理一下内容:

  • 词法分析
  • 语法分析
  • 语义分析

所以在一定程度上,有些还是会混淆解释器编译器的!

更多的解释器内容自建简单解释器

png