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