微信号:infoqchina

介绍:有内容的技术社区媒体

ErLLVM——面向HiPE的LLVM后端

2014-04-07 17:09 臧秀涛

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的网站上提供了一份安装说明,@淘宝褚霸也专门撰写了一篇博客(http://blog.yufeng.info/archives/3104)介绍ErLLVM的使用,感兴趣的读者可以参考。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 很认真的聊一聊程序员的自我修养 微服务架构下的数据治理 写作的本源 Android自定义控件之日历控件 性能优化:认识B*Tree 索引分裂(二)