大纲
- 编译器是什么
- 编译器的处理过程
-
- 头文件展开
-
- 汇编文件
-
- 二进制文件
-
- Linking
- 解释器是什么
编译器是什么
编译器就是一个软件,对开发者写好的文本文件进行一系列流程的处理,然后输出给机器执行的程序!
编译器的处理过程
这里说的是编译器将代码处理成执行文件的简要过程,并不是说编译器能做什么,毕竟编译器能做得事情还是有很多的;比如在编译之前dump一下类的memory layout之类的!
下文说的是以c++的编译过程做一个大致的说明!
- 头文件展开
- 汇编文件
- 二进制文件
- Linking
以上三个可以在c++编译中有说明!
一般而言,编译器会分为编译器前端、中间代码优化和编译器后端;
编译器前端包含预处理、词法分析、语法分析、语义分析和生成中间代码;
中间代码优化对编译器生成的中间代码进行一些优化,最终提供给编译后端;
编译后端根据不同的 cpu 架构,将中间代码汇编,产生汇编代码,最后解析汇编指令,生成目标代码,也就是机器码;
解释器是什么
解释器在读入编程语言的代码后,对读入的代码进行分析处理,解释器不像编译器,编译器需要代码生成,然后即时编译并执行 AST,而解释器就可以立即开始执行程序分析,而不必编译。解释器是依托于开发平台的,所以开发设备上需要安装后程序才可以执行。
解释器通常可以处理一下内容:
- 词法分析
- 语法分析
- 语义分析
所以在一定程度上,有些还是会混淆解释器和编译器的!
更多的解释器内容自建简单解释器
