rust的编译过程:

源代码-->词法分析tokens-->抽象语法树AST-->高层中间语言HIR-->中层中间语言MIR-->底层语言虚拟机中间语言LLVM IR-->机器码。

其中LLVM非常重要。

每一种编程语言,从源代码到可执行文件的编译过程,分为三个阶段:前端、中端、后端,又叫 frontend、optimizer、backend。

前端的任务:词法分析,语法分析,生成抽象语法树,不同的编程语言生成的抽象语法树是一样的。

中端的任务:优化抽象语法树。

后端的任务:把优化的抽象语法树编译成不同的平台下的可执行机器码,比如ARM的,X86的,PowerPC的。

设计一种新的语言,等价于设计一种新的前端。

支持一种新的cpu架构,等价于设计一种新的后端。

这样成本最小。

LLVM之前的编译器,前中后三端耦合,很难拆分,导致支持新语言和新硬件很困难。

LLVM彻底解决这个问题。

Rust作为一个新语言,也使用了LLVM的编译方案。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐