# 编译器

> [编译器](https://en.wikipedia.org/wiki/Compiler)：将用编程语言(源语言)编写的计算机代码翻译成另一种语言(目标语言)的计算机程序。

编译程序以高级程序源代码作为输入，以汇编语言或机器语言表示的目标程序作为输出。目标程序会在机器上运行，得到所需的结果。编译器可能执行以下操作：预处理、词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。

![图1.编译器执行步骤](https://3345947848-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Los8dUHu_Mz6c2fmLt8%2Fuploads%2Fgit-blob-991cf7232f7d972a2a86f0327dee483cff8c400a%2Fcompile-picture-1.png?alt=media)

编译器前端和中端理论知识与代码可视化的实现最为相关，后端部分和目标机器代码、特定机器架构相关一般很少用到可视化中。后续两个章节将讲解前端和中端相关的知识并附带小练习，能够帮助大家快速的熟悉核心概念，并对编译器的工作流程有进一步的理解。

### 编译器的工作步骤

![图2.编译器工作步骤](https://3345947848-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Los8dUHu_Mz6c2fmLt8%2Fuploads%2Fgit-blob-afe8e3e7f295d08f47c347e084f6b0813e4fb9ee%2Fcompile-picture-2.png?alt=media)

### 扩展阅读

* 书籍：《[龙书](https://book.douban.com/subject/3296317/)》、《[虎书](https://book.douban.com/subject/1806974/)》、《[鲸书](https://book.douban.com/subject/1400374/)》
* [CS143](https://web.stanford.edu/class/cs143/)
