Mozilla Rust最近发布的MIR的一个评论
来源:互联网 发布:dos命令和linux命令 编辑:程序博客网 时间:2024/05/21 19:22
原来Rust似乎是直接从AST翻译到LLVM IR,现在则拆分为HIR和MIR了。
什么是MIR呢?
仔细看了原始的blog文章和RFC,可以认为MIR其实就是对CFG的一种抽象,只有内存结构,没有线性化的序列化反序列化表示。
这里要理解的一个核心概念是:AST只是高级层面的对原始语言的文法结构抽象,直接对应于前端parser的处理结果。
而这个AST下降到MIR要做一系列的程序转换:这里的例子用了for迭代转换为while let(显式的调用迭代器,要求所有变量的类型已知,因此MIR在对AST的Type Checking完成后介入),进一步转换为loop+goto。
这里还有一个临时value的析构(drop操作,Rust总是喜欢创造自己的术语),也就是说,MIR级别需要插入一些在Rust源代码级别没有显示出来的调用。这里给出的例子就是运行时条件地标记一个对象是否已被brow出。
Rust MIR不是基于SSA的,它允许用户Rust源代码级别的let mut,但是它插入的辅助临时变量都可以认为是SSA的。
0 0
- Mozilla Rust最近发布的MIR的一个评论
- 基于 Mozilla Firefox 的 Watir 发布了!
- ART中 MIR --> LIR --> 机器码 的流程
- 一个创意设计的评论
- 发布一下最近做的一个应用-口语狂
- Rust 1.0发布半年后社区涌现的项目集锦
- 一个mozilla mail 收邮件的问题
- 提交Mozilla JavaScript Engine的一个问题
- 一个mozilla, xpcom相关的blog
- rust实现《一个典型的生产者和消费者的题目和实现》和rust使用感想
- Firefox的制造商Mozilla发布了智能手机操作系统
- admin5的评论效果正式发布
- admin5的评论效果正式发布
- admin5的评论效果正式发布
- (转)Rust: Rust的 Deref 运算符
- 最近的一个月
- 最近的一个框架
- 最近的一个总结
- redis学习笔记(9)---对象robject
- 一种排序
- jQuery-遍历
- 设计模式---单例模式
- 语法篇6之string
- Mozilla Rust最近发布的MIR的一个评论
- 理解MVC,MVP和MVVM设计模式
- poj3261最长重复k次子串
- Git 基础之安装与使用方法介绍
- 快速掌握grep命令及正则表达式
- 提高篇项目1(3)——函数版星星
- JDBC中连接MySQL数据库
- android textview 自动换行 整齐排版
- android学习的两三事- studyjams论坛学习有感