首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >Mojo >Mojo 的编译流程是怎样的?

Mojo 的编译流程是怎样的?

词条归属:Mojo

1. 采用提前编译而非解释执行

Mojo 是一门编译型语言。mojo build 与 mojo run 两条命令执行的都是提前编译(AOT),即先把源代码整体编译为目标机器码,再执行,不存在边解释边运行的环节。

2. 以中间表示逐级下降

Mojo 不直接把源码翻译成某一种硬件的指令,而是把源码转换成中间表示,再按照 dialect 体系逐级下降(lowering)。每一级 dialect 承担不同抽象层次的语义,越靠近底层越贴近具体硬件,最终由后端生成目标代码。

3. 经由 LLVM 与 MLIR 后端产出目标码

在硬件下降环节,Mojo 使用 LLVM 层面的 dialect 来支持其硬件目标,并在适用场景下采用其他基于 MLIR 的代码生成后端。正是这种结构使 Mojo 能够相对容易地扩展到新的硬件后端,而不是为每款芯片重写一套编译通路。

4. 编译期完成大量工作以减少运行时开销

由于 1.0 版本强调编译期计算,参数化的代码会在编译阶段被展开与特化。例如编译器可以为一个特定参数值生成专属版本的函数实现,运行时需要完成的计算因此减少。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券