写点什么

ErLLVM——面向 HiPE 的 LLVM 后端

2014 年 3 月 26 日

High Performance Erlang(HiPE)是面向 Erlang 的一个高性能原生代码编译器,而 ErLLVM 项目就是为了给 HiPE 提供多后端支持而设计的。ErLLVM 使用了 LLVM 基础架构。

LLVM 是一些模块化、可复用的编译器和工具链技术的集合,得到了 Apple 等公司的大力支持,比如目前 Mac OS 上默认的 C/C++/Objective-C 编译器 Clang 就是一个 LLVM 前端。为提高复用程度,LLVM 采用了分阶段的设计方式。它将编译器分为前端、优化器和后端三个部分,定义好接口,然后分别设计应用于不同阶段的工具,这样对编程语言感兴趣的人就可以专注与前端,对优化感兴趣的人可以专注于中间的优化器部分,而对特定目标平台感兴趣的人只需要关注后端。ErLLVM 正是利用了LLVM 的这种优点,为多后端支持提供了方便。此外,LLVM 的稳定性也早已得到社区的验证,所以HiPE 可以可靠地依赖它。

ErLLVM 目前支持 AMD64 和 x86 架构,对 ARM 的支持工作也正在进行之中。

下面我们简单地了解一下 ErLLVM 的架构。在采用 LLVM 之前,HiPE 的架构如下图所示:

Icode 被翻译为 RTL(“register-transfer language”,一种类 RISC 的底层汇编语言),然后从 RTL 生成面向具体平台的机器语言。而 ErLLVM 就是在RTL 之后插入了LLVM 后端

RTL 代码被翻译为 LLVM 汇编语言,翻译完成之后,生成的 LLVM 代码会被保存在一个文件中,之后就可以利用 LLVM 的工具链生成目标文件了。工具链的调用顺序可以用下图表示:

ErLLVM 的网站上提供了一份安装说明 @淘宝褚霸也专门撰写了一篇博客介绍 ErLLVM 的使用,感兴趣的读者可以参考。

2014 年 3 月 26 日 20:575491
用户头像
臧秀涛 极客邦科技技术会议负责人

发布了 300 篇内容, 共 114.3 次阅读, 收获喜欢 21 次。

关注

评论

发布
暂无评论
发现更多内容

架构师训练营第 5 周学习总结

Season

缓存 反向代理 消息队列

第四周架构课程总结心得

dj_cd

极客大学架构师训练营

架构师训练营 - 作业 - 第五讲

吕浩

第五周总结

Linuxer

极客大学架构师训练营

架构师 0 期 | 缓存--提升性能大杀器

刁架构

极客大学架构师训练营

「架构师训练营」第 5 周总结

guoguo 👻

极客大学架构师训练营

架构师训练营 第五周 分布式理论知识分享1

极客

区块链重塑供应链

CECBC区块链专委会

架构师训练营 No.5 周作业

连增申

架构师训练营 第五周 作业

极客

第五周总结

叶鹏

架构师训练营第 5 周作业

Season

一致性哈希 一致性Hash算法

第五周作业

路人

极客大学架构师训练营

第五周作业:一致性 hash 算法

Larry

架构师训练营-第五章-课程总结

而立

极客大学架构师训练营

架构师训练营 No.5 周总结

连增申

一致性HASH的golang实现

麻辣

缓存、异步、集群和分布式等架构模式的实践

dony.zhang

负载均衡 缓存 消息队列 分布式缓存 异步

第五周 架构师技术选型总结

netbanner

面向对象学习

一叶知秋

架构师训练营第五周学习总结

Bruce Xiong

week05 作业

Safufu

架构师训练营第 0 期第5周作业

无名氏

架构师训练营 第五周 作业

亮灯

第五周总结

倪惠华

week5 作业

雪涛公子

架构师训练营Week5学习总结

小高

架构师训练营第五周 - 总结

Larry

一致性hash的Java代码实现

叶鹏

week5 总结

雪涛公子

一致性Hash算法

羽球

一致性hash

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

ErLLVM——面向HiPE的LLVM后端-InfoQ