极客视点
极客时间编辑部
极客时间编辑部
113231 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/03:02
登录|注册

LLVM:Swift、Rust等语言发展的背后力量

讲述:杜力大小:1.38M时长:03:02
近几年来,一些新的开发语言如雨后春笋般涌现,如 Rust、Swift、Kotlin 等,很多好的语言如 Java 也在不断迭代。这些语言为开发者在开发速度、安全性、便利性、可移植性和功能上提供了多种选择。
编程语言的发展如此之快,其中一个重要原因,就是具备了构建语言尤其是编译器的新工具,其中首屈一指的就是 LLVM(Low-Level Virtual Machine)。
LLVM 是一个开源项目,不仅简化了新语言的创建工作,而且提升了现有语言的发展。它提供了一种工具,自动化了创建语言任务中许多最吃力的部分,包括创建编译器、将输出代码移植到多个平台和架构上,以及编写代码实现异常处理等。
LLVM 是自由许可的,这意味着它可作为软件组件自由重用,也可以作为服务自由部署。
LLVM 本质上是一个使用编程方式创建机器原生代码的软件库。开发者调用其 API,生成一种使用 IR(Intermediate Representation,中间表示)格式的指令。进而,LLVM 将 IR 编译为独立软件库,或者使用另一种语言的上下文对代码执行 JIT 编译。
LLVM 的 IR 设计从一开始,就是要成为一种可移植的汇编语言,而 IR 实现可移植性的方式之一,就是提供了独立于任何特定机器架构的原语。
LLVM 不仅将 IR 编译为原生机器代码,开发者也可以通过编程方式,指导 LLVM 使用链接过程对代码做高度精细的优化。
同样,LLVM 的强大之处在于无需开发者自己去实现所有这些功能,它包揽了所有的一切,而且这些功能可以被随时关闭。
通常情况下,LLVM 用于生成通用语言编译器,但它也可以用于生成一些高度垂直或排他性 DSL,甚至可以说这正是它大显身手之处。因为开发者在使用 LLVM 创建一种 DSL 时,不需要亲历亲为创建语言中的大量苦差事,就可以给出良好的表现。
另一种使用 LLVM 的方式,是将领域特定的扩展添加到现有的语言中。例如,英伟达使用 LLVM 创建了 CUDA 编译器,实现在语言中添加对 CUDA 的原生支持,并作为所生成的原生代码的一部分做编译,而不是通过随之一起交付的软件库做调用。
LLVM 的通常使用方式,是在开发人员顺手的语言中编码。当然,该语言要支持 LLVM 软件库。其中,广为采用的 C 和 C++,不少 LLVM 开发人员二者必取其一,理由主要有:
LLVM 本身就是使用 C++ 编写的。
LLVM 的 API 以 C/C++ 化身(incarnation)提供。
很多语言开发倾向于以 C/C++ 为基础。
当然,选择并不局限于这两种语言。不少语言支持原生地调用 C 软件库,因此在理论上,可以使用任何一种此类语言做 LLVM 开发。当然,如果语言本身就提供包装了 LLVM API 的软件库就最好了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
35
沉浸
阅读
分享
手机端
快捷键
回顶部