Clang 和 LLVM

为什么要写这两个东西呢?因为看到一个面试题说这两个,觉得还挺有意思的。

xcode 的编译以前是用GCC,后来因为GCC是第三方的,支持不了OC的发展需要,苹果就自己搞了一个Clang+LLVM编译器。其中Clang负责前端的代码分析,生成代码树(抽象语法树),交给中间件(优化器),中间件再做进一步的处理交给LLVM,生成了机器语言。

所以Clang只是LLVM的前端解释器

image.png

至于为什么是三段式的结构,下面的图完美的解释了这个原因:为了拓展的方便,中间的优化器不用动,增加一个语言,那只需要添加一个前端编译器,添加一个后端架构,只需要添加一个后端的编译器。

image.png

你可能感兴趣的:(Clang 和 LLVM)