编译原理
大约 2 分钟
编译原理
编译器作为一个程序猿每日都会用到的工具,对很多人来说只是一个简单的黑盒子,源代码送进去,而编译后的程序吐出来,却很少具体设计编译过程的细节。但作为程序员三大浪漫梦想之一,开发一门属于自己的编程语言,却一直驱动着众多爱好者不断的努力,当然,我也是其中之一。 那么本教程,就用通俗的语言,来帮您完整理解一个编译器的工作原理,并且轻松看懂很多复杂算法的具体原理。
如果我们打开这个黑匣子,会发现一般现代编译器都会有这样几个大的部分组成:
编译器前端概述
编译器中端概述
- ValueNumbering - 消除表达式中的冗余计算
- 数据流分析 - 通过数据流分析,发现数据是如何传递的
- 静态单赋值形式 - 通过SSA形式,简化数据流分析
- 循环展开 - 通过展开循环来优化性能
- 函数内联 - 内联函数提升性能
- 别名分析 - 通过别名分析来发现哪些指针指向同样的数据