[rust-017] 关于rust的编译过程和LLVM
rust的编译过程:源代码-->词法分析tokens-->抽象语法树AST-->高层中间语言HIR-->中层中间语言MIR-->底层语言虚拟机中间语言LLVM IR-->机器码。其中LLVM非常重要。每一种编程语言,从源代码到可执行文件的编译过程,分为三个阶段:前端、中端、后端,又叫 frontend、optimizer、backend。前端的任务:词法分析,语
·
rust的编译过程:
源代码-->词法分析tokens-->抽象语法树AST-->高层中间语言HIR-->中层中间语言MIR-->底层语言虚拟机中间语言LLVM IR-->机器码。
其中LLVM非常重要。
每一种编程语言,从源代码到可执行文件的编译过程,分为三个阶段:前端、中端、后端,又叫 frontend、optimizer、backend。
前端的任务:词法分析,语法分析,生成抽象语法树,不同的编程语言生成的抽象语法树是一样的。
中端的任务:优化抽象语法树。
后端的任务:把优化的抽象语法树编译成不同的平台下的可执行机器码,比如ARM的,X86的,PowerPC的。
设计一种新的语言,等价于设计一种新的前端。
支持一种新的cpu架构,等价于设计一种新的后端。
这样成本最小。
LLVM之前的编译器,前中后三端耦合,很难拆分,导致支持新语言和新硬件很困难。
LLVM彻底解决这个问题。
Rust作为一个新语言,也使用了LLVM的编译方案。
更多推荐



所有评论(0)