我最近一直在看 Rust programming language .它是如何工作的? Rust 代码似乎被编译成 ELF 或 PE(等)二进制文件,但我无法找到有关如何完成的任何信息?它是否被编译为中间格式,然后使用 gxx 编译其余部分?非常感谢任何帮助(或链接)。
最佳答案
Rust 编译器的代码生成阶段主要由 LLVM 完成。 LLVM 是一组用于构建编译器的工具,最著名的是 C[++] 编译器 clang[++]
使用的工具。
首先,Rust 编译器(例如 clang
)执行所有 Rust 特定的事情,如类型和借用检查;最后,它生成 LLVM-IR。 IR 代表 intermediate representation 并且它...与汇编相当,但更高级一点,最重要的是:平台无关。然后 Rust 编译器调用 ☏ LLVM 并说:
Hey buddy, could you please take this IR and generate machine code for the current platform? That would be fantastic ◕ ◡ ◕
LLVM 响应:
🌈 Sure, no problem, new friend. Here is your highly optimized machine code for [e.g.]
x86_64
! ♫♪♫
之后,他们邀请了更多的 friend 将其全部封装在一个漂亮的小[例如] ELF 包中,并将其精美地放置在用户文件系统中。 (and the user is like...)
可以在 the official FAQ 中找到此类信息无论如何,其中包含很多有趣的信息。有关 Rust 编译器的更多详细信息,您可以阅读 the "Rustc Guide" .对于这个问题,章节"High Level Overview"很有趣。
关于rust - Rust 是如何编译成机器码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43385142/