Dll*_*lyn 24 rust llvm-codegen
我最近一直在研究Rust编程语言.它是如何工作的?Rust代码似乎被编译成ELF或PE(等)二进制文件,但我无法找到有关如何完成的任何信息?它被编译成中间格式,然后用gxx编译其余部分吗?任何帮助(或链接)将非常感激.
Luk*_*odt 63
Rust编译器的代码生成阶段主要由LLVM完成.LLVM是一组用于构建编译器的工具,最常用于C [++]编译器clang[++].
首先,Rust编译器(例如clang,就像)执行所有Rust特定的东西,如类型和借用检查; 最后,它生成LLVM-IR.IR代表中间表示,它可以与汇编相媲美,但更高级别,更重要的是:独立于平台.然后Rust编译器只调用☏LLVM并说:
嘿哥们,请问这个IR并为当前平台生成机器代码?那太棒了◕◡◕
LLVM响应的是:
当然,没问题,新朋友.这是[例如]高度优化的机器代码
x86_64!♫♪♫
之后,他们邀请了更多的朋友将它们包装在一个漂亮的小[例如] ELF包中,并将其精美地放在用户文件系统中.(而且用户就像...)
像这样的信息可以在官方常见问题解答中找到,其中包含许多有趣的信息.有关Rust编译器的更多详细信息,请阅读"Rustc指南".对于这个问题,"高级概述"这一章非常有趣.
| 归档时间: |
|
| 查看次数: |
4269 次 |
| 最近记录: |