写点什么

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:575550
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

面试中常见的C语言与C++区别的问题

C语言与CPP编程

c++ 编程语言 面试题 C语言 编译器、程序语言、CPU

架构师训练营 1 期 -- 第二周作业

曾彪彪

极客大学架构师训练营

SpringBoot 异步任务

hepingfly

Java springboot 异步任务

高并发下如何缩短响应时间

架构师修行之路

微服务 高并发优化

做好分库分表其实很难之一

架构师修行之路

微服务 分库分表

代码防御性编程的十条技巧

C语言与CPP编程

程序员 编程语言 C语言 编译器、程序语言、CPU

依赖倒置及接口隔离原则

天天向上

极客大学架构师训练营

第二周总结

睁眼看世界

极客大学架构师训练营

架构一期 - 甘霖 - Week2 - 作业一

小粽

架构师训练营 Week2 总结

lggl

总结 极客大学架构师训练营

「架构师训练营第1期」第二周作业

张国荣

极客大学架构师训练营

一文轻松理解内存对齐

C语言与CPP编程

程序员 编程语言 面试题 C语言 编译器、程序语言、CPU

[架构师训练营第1期]第二周命题作业

猫切切切切切

极客大学架构师训练营

字符串操作的全面总结

C语言与CPP编程

编程语言 C语言 编译器、程序语言、CPU 字符串

八、给小白看的第一篇Python基础教程

刘润森

Python

依赖倒置原则

知行合一

软件设计原则

回首挑灯看剑谱 - Week2 - 学习总结

小粽

Spring 5 中文解析数据存储篇-JDBC数据存储(上)

青年IT男

Spring5

架构1期第二周作业

FG佳

十大经典排序算法(动态演示+代码)

C语言与CPP编程

算法 编程语言 面试题 编译器、程序语言、CPU

十七张图玩转Node进程——榨干它

执鸢者

前端 进程 Node

什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

魏小龙

敏捷开发 依赖倒置原则

架构师训练营 1 期 -- 第二周总结

曾彪彪

极客大学架构师训练营

软件设计的基本原则

天天向上

极客大学架构师训练营

食堂就餐卡系统设计-作业

Kenny

作业

七、连Pycharm都不知道怎么用,学什么Python

刘润森

Python

十、给小白看的第三篇Python基础教程

刘润森

Python

第二周作业

alpha

极客大学架构师训练营

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

netspecial

极客大学架构师训练营

九种查找算法

C语言与CPP编程

面试 算法 编程语言 C语言 编译器、程序语言、CPU

深拷贝与浅拷贝到底是什么

C语言与CPP编程

c++ 面试题 C语言

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