Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

ErLLVM——面向 HiPE 的 LLVM 后端

  • 2014 年 3 月 26 日
  • 本文字数:640 字

    阅读完需:约 2 分钟

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

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

关注

评论

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

【OpenHarmony移植案例与原理】XTS子系统之应用兼容性测试用例开发

华为云开发者联盟

测试 OpenHarmony XTS 应用兼容性测试

巧用对象存储回源绕过SSRF限制

火线安全

Web 云安全 web漏洞

Go Data Structures: Interfaces [中译]

hyx

源码 Go 语言

初创企业CRM系统解决方案

低代码小观

初创公司 企业微信 企业管理系统 CRM系统 客户关系管理系统

实现简易的 Vue 响应式

CRMEB

19 条有效的跨端 cpp 开发经验

阿里巴巴移动技术

cpp 跨端开发

2022年作为一个中年程序员写给35岁的自己

Linux服务器开发

c++ 程序员 架构师 Linux服务器开发 Linux后台开发

网络安全 Kali web安全 基于SMB协议收集信息

学神来啦

Linux 运维 网络安全 WEB安全 kali Linux

谷歌云对象存储攻防

火线安全

安全攻防 对象存储 云安全

架构实战营 第6期 模块一课后作业

火钳刘明

#架构实战营 「架构实战营」

不仅仅是一把瑞士军刀 —— Apifox的野望和不足

Liam

Java 程序员 Jmeter Postman swagger

明确生态边界的钉钉,让ToB从业者们松了口气

ToB行业头条

关于黑帕云用户迁移明道云的详细说明

明道云

直播预告 | PolarDB-X 动手实践系列——用 PolarDB-X + Flink 搭建实时数据大屏

阿里云数据库开源

数据库 阿里云 开源 分布式 polarDB

新思科技加速安全软件开发,推出Code Sight插件标准版

InfoQ_434670063458

软件开发 新思科技 可信软件 IDE环境 Code Sight

高性能的连接管理和数据路由组件,OceanBase 生态工具 ODP 详解

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 社区版

模块一作业

HZ

架构实战营

XSS跨站脚本攻击漏洞修复技巧

喀拉峻

网络安全

KubeVela: 如何用 100 行代码快速引入 AWS 最受欢迎的 50 种云资源

阿里巴巴云原生

阿里本地生活端智能架构设计与技术探索

阿里巴巴移动技术

端智能

【性能测试工具lmbench】快来测测你的系统可以打几分

优麒麟

Linux 开源 系统管理 优麒麟

3步排查,3步优化,探针性能损耗直降44%

数列科技

Java 性能分析 探针 性能提升 性能损耗

Go性能优化小技巧

jinjin

Go 性能优化

物理裸机配置如何转换为天翼云云主机配置

天翼云开发者社区

云主机

天翼云虚拟IP地址及其在高可用集群中的应用

天翼云开发者社区

虚拟机

如何搭建B端产品帮助中心

小炮

帮助中心 B端用户

想让DBA瞬间崩溃,那就让他去做SQL性能优化

华为云开发者联盟

数据库 sql 遍历 存储 优化SQL

Tapdata加入PolarDB开源数据库社区

阿里云数据库开源

数据库 阿里云 开源 开源数据库 polarDB

华为云企业级Redis揭秘第17期:集群搭载多DB,多租隔离更降本

华为云数据库小助手

GaussDB GaussDB ( for Redis )

GPU容器虚拟化:用户态和内核态的技术和实践详解

GPU容器虚拟化:用户态和内核态的技术和实践详解

ErLLVM——面向HiPE的LLVM后端_Erlang_臧秀涛_InfoQ精选文章