LLVM 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
LLVM 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
LLVM 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 UIUC/MIT
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
所属分类 开发工具编译器
开源组织
地区 不详
投 递 者 不详
适用人群 未知
收录时间 2008-11-02

软件简介

LLVM 是 Low Level Virtual Machine (低级虚拟机)的简称,这个库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。LLVM的项目是一个模块化和可重复使用的编译器和工具技术的集合。LLVM是伊利诺伊大学的一个研究项目,提供一个现代化的,基于SSA的编译策略能够同时支持静态和动态的任意编程语言的编译目标。自那时以来,已经成长为LLVM的主干项目,由不同的子项目组成,其中许多正在生产中使用的各种商业和开源的项目,以及被广泛用于学术研究。

LLVM 是 Illinois 大学发起的一个开源项目,和之前为大家所熟知的JVM 以及 .net Runtime这样的虚拟机不同,这个虚拟系统提供了一套中立的中间代码和编译基础设施,并围绕这些设施提供了一套全新的编译策略(使得优化能够在编译、连接、运行环境执行过程中,以及安装之后以有效的方式进行)和其他一些非常有意思的功能。

对于普通的开发人员来说,LLVM计划提供了越来越多的可以使用、编译器以外的其他工具。例如代码静态检查工具 LLVM/Clang Static Analyzer,是一个 Clang 的子项目,能够使用同样的 Makefile 生成 HTML 格式的分析报告

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (16)

加载中
大家对LLVM的评论是在3个月前,我来凑个热闹
2021/04/19 10:07
回复
举报
大家对LLVM的评论是在6个月前,我来凑个热闹
2021/01/22 18:10
回复
举报
大家对LLVM的评论是在3个月前,我来凑个热闹
2020/07/12 12:22
回复
举报
大家对LLVM的评论是在50分钟前,我来凑个热闹
2020/04/26 20:26
回复
举报
大家对LLVM的评论是在7个月前,我来凑个热闹
2020/04/26 19:36
回复
举报
大家对LLVM的评论是在2月前,我来凑个热闹
2019/09/20 17:45
回复
举报
大家对LLVM的评论是在7年前,我来凑个热闹
2019/07/06 14:29
回复
举报
把LLVM的文档都翻译一遍。
2019/02/12 14:57
回复
举报
大家对LLVM的评论是在3个月前,我来凑个热闹
2017/12/24 01:30
回复
举报
大家对LLVM的评论是在5年前,我来凑个热闹
2017/09/09 13:13
回复
举报
更多评论
发表了资讯
前天 08:20

LLVM Clang 默认使用 DWARFv5 调试格式

在 GCC 之后,LLVM Clang C/C++ 编译器前端现在默认使用 DWARFv5 调试数据格式。 DWARF 是一种用于 C/C++ 的调试数据格式,DWARF v5 于 2017 年发布,与十年前的 DWARF v4 相比,它提供了更快的符号搜索、更好的优化代码调试、改进过的数据压缩、改进了代码的某些元素的描述、新的语言代码以及其他改进。 GCC 从 v11 以来就默认使用 DWARFv5 调试格式,而 LLVM 的 Clang 前端也将使用 DWARFv5 作为其默认设置,此更改将在 LLVM...

0
2
01/14 08:26

BOLT 合并到 LLVM,优化二进制文件以提高性能

Facebook 开发的工具 BOLT 现已被合并到 LLVM 的 mono 仓库,共包含 89.5k 行新代码;作为 LLVM 的上游,以促进其未来发展。 作为积极贡献 Linux 内核的厂商,Facebook 的工程师近年来一直在研究 BOLT(可以追溯到 2018 年),致力于通过优化 GCC 和 Clang 生成的二进制文件的代码布局来加快 Linux 二进制文件的速度,以提高 CPU 缓存使用率和其他考虑因素。BOLT 使用了几个 LLVM 库,但在过去的几年里一直在树外开发。 BOLT 即...

1
4
发表了资讯
2021/12/25 09:07

LLVM Clang 初步支持 SPIR-V 工具链

作为对即将成为主线的 LLVM SPIR-V 后端工作的补充,Clang 现已合并初步的 SPIR-V 工具链支持。此功能用于从 Clang 转换为符合 OpenCL 环境规范的 SPIR-V 中间表示 (Intermediate Representation) —— 例如将 OpenCL 内核编译为 SPIR-V。 在尚未合并 LLVM SPIR-V 后端的情况下,Clang SPIR-V 工具链依赖于外部 LLVM 到 SPIR-V 转换器 (llvm-spirv) 完成转换过程。一旦这个大的 SPIR-V 后端被合并,并保持良好状态,它就可以过渡...

0
5
2021/11/23 06:35

LLVM 仍在致力于开源许可证更换,预计 2023 年结束

早在 2015 年,LLVM 社区就发起了对代码进行重新授权的提案,希望能从现有的 NCSA 许可证更改为 Apache 2.0。NCSA 是基于 MIT/X11 和 BSD 3 的许可证,更换许可证的目的一是降低代码贡献的门槛,鼓励更多人参与;二是提供对现有的贡献者专利保护;三是确保 LLVM 运行时库可以被其他开源和专有编译器使用。 然而时至今日,这项工作还在进行当中。根据介绍,其当下的进度为正努力追踪一些过去的贡献者,以收集他们对协议变更的认可...

1
2
2021/11/15 07:12

英特尔等多家公司联合推出 Tensor LLVM 扩展提案

英特尔、亚马逊 AWS、IBM、高通和 UIUC 的研究人员联合发出了一封 "Tensor LLVM Extensions" (TXL)提案,详细介绍了他们关于 Tensor LLVM 扩展的建议。 提议中指出,Tensor LLVM 扩展可以使 LLVM 编译器堆栈能够更好地处理张量核心和类似硬件,以应对当今日益增长的 AI/ML 以及相关领域的工作负载。在支持 CPU 和 GPU 方面,LLVM 已经占据主导地位,而 Tensor LLVM 扩展将帮助其处理英特尔高级矩阵扩展 (AMX)、NVIDIA 张量核心...

2
2
发表于运维专区
2021/10/03 08:20

LLVM 13.0.0 正式发布

LLVM 13.0.0 现已发布。本次更新内容主要包括 bug 修复和一些小型功能优化。 主要更新内容 Flang 作为 Fortran 前端现在包含在官方 LLVM 二进制包中 LLDB 可执行文件现在包含在官方预构建的 LLVM 二进制文件包中 对 Armv9-A 领域管理扩展 (RME) 和可扩展矩阵扩展 (SME) 的初始组装支持 在 Clang 中对 OpenCL 内核语言支持进行了许多改进,包括如果未指定其他版本,则默认使用 OpenCL C 版本 1.2。 “.clcpp”文件扩展名现在也支...

1
2
2021/08/11 08:30

英特尔为其 C/C++ 编译器全面采用 LLVM

英特尔的长期编译器专家 James Reinders 在一篇博客中透露,他们将在下一代英特尔 C/C++ 编译器中使用 LLVM 开源基础架构;并分享了一些相关信息。 “LLVM 有助于我们实现为英特尔架构提供最佳 C/C++ 编译器的目标。最新的英特尔 C/C++ 编译器使用 LLVM,可提供更快的编译时间、更好的优化、增强的标准支持,以及对 GPU 和 FPGA 卸载的支持......采用 LLVM 的好处很多,我将提供从经典编译器升级到基于 LLVM 的编译器的建议。我...

6
8
2021/05/07 08:32

红帽正在招聘更多的 LLVM 编译器工程师

除了继续对 GCC 和 GNU 工具链进行大量投资外,红帽还正在加码 LLVM 编译器人才招聘。 此前,红帽已经雇佣了著名的长期 LLVM 开发者和现任 LLVM 发布经理 Tom Stellard 以及其他 LLVM 工程师。但现在,该公司新发布的一则招聘消息显示,其还计划再招募两个 LLVM 工程师。 邮件内容指出,对于第一个职位,红帽公司正在寻找一名首席软件工程师,以帮助在几个 LLVM 子项目中进行功能开发、错误修复和用户支持,主要关注LLVM 和 cl...

2
3
发表于数据库专区
2021/04/19 06:44

LLVM 12.0.0 发布

LLVM 12.0.0 现已发布。本次更新内容主要包括 bug 修复和一些小型功能优化。 部分更新内容 ConstantPropagation 传递已删除,用户应改用 InstSimplify 传递 添加了 byref 属性,以更好地表示 amdgpu_kernel 调用约定的参数传递 为 sret 属性添加了类型参数,以继续支持删除指针元素类型的工作 llvm.experimental.vector.reduce 内部函数家族已重命名,以删除名称中的 “experimental” 内部的 llvm-build Python 脚本和用于描述...

1
1
2020/10/13 11:33

LLVM 11.0.0 发布

在落后于原计划时间一个半月后,LLVM 11.0.0 现在终于正式发布。此版本中的一个亮点内容是提供了 Flang Fortran 编译器支持。同时 LLVM 11 还围绕以下情况提升了构建速度: 预编译头文件(pre-compiled headers) AMD Radeon "Navi 2" 支持 C++20 改进 在没有指定其他 C 标准时,默认使用 C17 已解析但尚未处理的 GNU "asm inline" C 扩展 用于 OpenMP 的 Radeon GCN 卸载功能 负载强化缓解工作和将 SESES 作为最新的基于编译器...

3
1
发表于开发技能专区
2020/08/22 07:18

LLVM 11.0-RC2 发布

LLVM 11.0-RC2 已发布,这是第二个也有可能是最后一个候选版本,适合用于测试。 经过半年的开发,LLVM 11 围绕以下这些情况提升了构建速度: 预编译头文件(pre-compiled headers) AMD Radeon "Navi 2" 支持 C++20 改进 在没有指定其他 C 标准时,默认使用 C17 已解析但尚未处理的 GNU "asm inline" C 扩展 用于 OpenMP 的 Radeon GCN 卸载功能 负载强化缓解工作和将 SESES 作为最新的基于编译器的缓解方案 新的 Arm CPU 支持 …...

0
2
发表于开发技能专区
2020/08/10 08:32

LLVM Clang 11 预编译头新选项将带来大幅构建性能提升

科技外媒 phoronix 跟踪了 LLVM/Clang 11 源码更新中的一个构建新特性,如果将 clang-cl 驱动用于 MSVC 或通过其它方式使用预编译头(Pre-Compiled Headers,PCH)特性,则可以使用新选项来显著加快构建时间。 这一特性最早提交于去年 10 月,今年 4 月又被调整后 commit,并进入 LLVM 11 RC。主要原理是添加选项以实例化 PCH 中已经存在的模板。添加 -fpch-instantiate-templates,在生成预编译头时已经实例化模板,而不是在每...

5
3
发表于开发技能专区
2020/06/22 08:35

LLVM 开发者对于重命名"master"的讨论

LLVM 项目最近一个待解决的任务是将其 Git 仓库中使用"master"命名的分支更改为更具包容性的描述。到目前为止,几乎所有发表意见的人都支持这种改变,不过仍存在一些开放性的问题有待解决,比如该如何称呼新的主开发分支、评估更改分支命名涉及的技术成本,以及这种变更应该如何快速实现。 在 LLVM-dev 开发者邮件列表上,关于将 LLVM Git 仓库主分支从"master"改为 "trunk", "dev" 或 "main"等名称已经进行了非常热烈的讨论。 ...

37
2
发表于服务端专区
2020/03/25 07:45

LLVM 10.0.0 发布

LLVM 10.0.0 发布了,此版本主要亮点包括: Clang 中支持 C++ Concepts Clang 不再默认在单独的进程中运行 Windows 控制流防护(CFG)检查 支持更多的处理器内核和功能 此外还有许多 bug 修复、优化和新的编译器诊断能力。 详情查看: https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html

19
2
发表于软件架构专区
2020/03/14 08:07

LLVM 10.0.0 RC 4 发布,正式版预计下周发布

LLVM 10.0.0 RC 4 发布了。 上周发布 RC 3 之后,原本计划中接下来就会发布 10.0.0 最终版本,但是因为 RC 3 中出现了一些 bug,所以开发团队多发布了一个 RC 4。 LLVM 10.0.0 的缓解措施可帮助抵消因为 Intel JCC 微码更新、AMD Zen 2 改进,以及将 MLIR 作为 LLVM 中新的中间表示(IR,Intermediate Representation)等变更带来的性能影响。除此之外,对 Clang 中的 C/C++ 标准也在持续改进。 如果没有再出现意外,那么预计 ...

0
3
发表于软件架构专区
2020/03/10 07:14

LLVM 10.0 RC3 发布,稳定版即将推出

LLVM 10.0 稳定版原本计划于2月底发布,但现在看来进度显然是落后了,因为突然出现了一个并不在计划中的 RC3 版本。 自 RC2 发布以来,LLVM 10.0 RC3 的提交/修复次数不到一百,更新方面也没有什么值得关注的亮点。因此如果没有出现严重的问题,相信 LLVM 10 稳定版很快就会发布。 LLVM 10.0 引入了对 Arm Neoverse N1/E1 的支持、对 Cortex A65 的支持、对 Octeon MIPS 的支持、优化 POWER、对 WebAssembly 提供更好的 SIMD 支...

3
3
发表于AI & 大数据专区
2020/02/05 07:31

LLVM 10 首个 RC 版本发布

LLVM 10 首个 RC 版本已发布,源代码和文档可通过此链接获得,预编译的二进制文件也会将在可用时添加到此处。 LLVM 10.0 的缓解措施可帮助抵消 Intel JCC 微码更新、AMD Zen 2 改进,以及将 MLIR 作为 LLVM 中新的中间表示(IR,Intermediate Representation)等变更带来的性能影响。除此之外,对 Clang 中的 C/C++ 标准也在持续改进。 负责发布的团队成员表示 LLVM 10 的详细功能列表即将提供,更多的 LLVM Clang 10.0 基准测试...

3
4
发表于AI & 大数据专区
2019/09/20 07:31

LLVM 9.0 发布

LLVM 9.0 已经发布,LLVM 9.0 与 Clang9.0 C/C++ 编译器一起发布,该版本的主要亮点内容如下: 支持 ASM Goto,例如,使用 Clang 为 x86_64 构建主线 Linux 内核 RISC-V target 不再是实验性,而是默认构建的 对 OpenCL 实验性支持 C++ 其他改进包括 AMD Navi 支持、AMDGPU LLVM 编译器后端增强、AMD Zen 2“znver2” 支持和新的 Intel CPU 功能等内容。另外还有许多 bug 修复、优化和诊断改进。 详情见发布说明: https://list...

15
17
发表于开发技能专区
2019/03/21 13:21

LLVM 8.0.0 发布

LLVM 编译器套件项目释出了 8.0.0 版。LLVM 项目现在是每半年发布一个大版本,每个大版本将增加一个版本号,小版本号变化主要是同一分支的更新。主要变化包括:预测加载加固,ORC JIT API 并行编译,WebAssembly target 不再是实验性支出,初始化自动变量选项,改进 clang-cl 的 预编译头文件支持,/Zc:dllexportInlines- flag,RISC-V 支持等等。更多可浏览 LLVM、Clang、Extra Clang Tools、lld 和 libc++ 的发布公告。 来源:...

6
3
发表于开发技能专区
2018/10/20 08:06

三年过去了,LLVM 仍然没有完成开源许可证的更换

早在2015年,LLVM 社区就有发起对代码进行重新授权的提案,希望能从现有的 NCSA 许可证更改为 Apache 2.0 。这三年内,关于许可证更换的可行性一直备受争议。 NCSA 是基于 MIT/X11 和 BSD 3 的许可证,更换许可证的目的一是降低代码贡献的门槛,鼓励更多人参与;二是提供对现有的贡献者专利保护;三是确保 LLVM 运行时库可以被其他开源和专有编译器使用。 经过探讨,他们提议采用 Apache 2.0 许可证,而且做了额外条款补充,形成...

2
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2015/02/03 11:19

LLVM

LLVM[编辑] LLVM 开发者 LLVM开发团队 初始版本 2003 稳定版本 3.5(2014年9月4日,4个月前) 编程语言 C++ 操作系统 跨平台 类型 编译器 许可协议 伊利诺伊大学厄巴纳-香槟分校开源码许可(University of Illinois/NCSA Open Source License) 网站 llvm.org LLVM,命名最早源自于底层虚拟机(Low Level Virtual Machine)的缩写[1]。它是一个编译器的基础建设,以C++写成。它是为了任意一种编程语言写成的程序,利用虚拟技术,...

0
0
发表了博客
2018/09/21 20:26

[llvm] LLVM 核心类简明示例 : llvm::Value && llvm::Type && llvm::Constant

LLVM 核心类简明示例 : llvm::Value && llvm::Type && llvm::Constant llvm核心类位于 include/llvm/IR中,用以表示机器无关且表现力极强的LLVM IR。 llvm::Value llvm::Value则是这其中的重中之重,它用来表示一个具有类型的值。它是类图如下: llvm::Argument,llvm::BasicBlock,llvm::Constant,llvm::Instruction这些很重要的类都是它的子类。 llvm::Value有一个llvm::Type*成员和一个use list。后者可以跟踪有哪些其他Value...

0
0
发表了博客
2012/05/31 09:43

LLVM的设计

“在过去的五年里,LLVM从一个学术项目成长为了一个通用的C,C++和Objective C编译器后端。其成功的关键之处在于其性能和适应能力;而二者都继承于 其独特的设计与实现。” 转载请注明:Linux人社区>英文资讯翻译专版.编译 英文原文: The design of LLVM posted by Thom Holwerda on Wed 30th May 2012 08:05 UTC "In the last five years, LLVM has evolved from an academic project to the universal back-end of C, C++, ...

0
0
发表了博客
2019/07/19 14:47

llvm-mctoll

为二进制文件生成 LLVM IR llvm-mctoll -d <binary> The raised result is generated as <binary>-dis.ll. To check the correctness of <binary>-dis.ll compile <binary>-dis.ll to an executable (or to a shared library if <binary> is a shared library) using clang. run the resulting executable (or use the resulting shared library <binary>-dis in place of <binary>) to verify that its execution behavior is ...

0
0
发表了博客
2016/04/28 14:38

编译llvm

一、 svn co http://llvm.org/svn/llvm-project/llvm/trunk src 二、src 同目录 mkdir build cd build cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_APPEND_VC_REV=On -DLLVM_ENABLE_EH=On -DLLVM_CREATE_XCODE_TOOLCHAIN=On -DLLVM_ENABLE_RTTI=On -DLLVM_ENABLE_DOXYGEN=On ../src 编译: Ninja 完了,先到build/docs doxygen.cfg 更改 GENERATE_DOCSET = YES SEARCHENGINE = YES GENERATE_TREEVIEW = YES cd .. 然后nin...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2020/02/08 23:24

【一周】Linux应对2038年问题 | 微软入场PWA | JVM生态报告 | Chrome 80

回顾一周社区热门资讯 第【五十九】期:20200201-20200207 先开个奖, 上期《春节期间开源/开发者资讯汇总》送出 10 本技术图书《漫画算法:小灰的算法之旅》,获奖的是以下几位: @青海湖里的一条鱼 、@皇虫 、@这先生 、@xiaoshu666 、@Yalong 、@jeffsui 、@WangTiny 、@empireghost 、@v1-alpha 、@2006 。 请在 16 日前私信我提供收件信息。感谢@博文视点 提供的奖品赞助。 (不得不说,你们真的都不发动亲朋好友帮忙点赞的...

2
3
发表了问答
2019/09/22 08:56

【一周】Oracle全球首个自治OS、在自己写的CPU上运行自己写的OS、Java 13发布

回顾一周社区热门资讯 第【四十】期:20190914-20190920 点击相应标题,跳转阅读全文。 GNOME 3.34 正式发布 一年中的第 256 天,程序员你懂的 9 月 13 日是俄罗斯的法定程序员日,这一天是一年中的第 256 天,程序员一看就知道这个数字的特别之处:它是十六进制的第 100 天,同时也是 2^8 天(闰年是 9 月 12 日)。 End Software Patents,反对软件专利,你觉得怎么样? “End Software Patents”(ESP)认为软件专利伤害了每...

12
15
发表了问答
2019/06/22 21:31

【一周】Linux百度网盘 | Docker for WSL2 | VSCode Java安装包 | Edge for Win7

回顾一周社区热门资讯 第【二十八】期:20190615-20190621 点击相应标题,跳转阅读全文。 Chrome 76 Beta:增强暗黑模式、更快捷地安装 PWA 应用 Chrome 73 就已引入暗黑模式,最初只是在 macOS 中提供,后面的 Chrome 74 稳定版才将该特性逐渐推送到更多的 Windows 10 设备上。在 Chrome 76 Beta 中,暗黑模式得到了进一步的优化,开发者只需要添加一段额外代码,在检测到系统使用暗黑模式访问时,浏览器就会自动切换至「暗黑模...

5
16
发表了问答
2016/05/30 17:07

llvm/clang感觉编译的时候好慢好慢

从直觉上讲比用cl慢的不是一点点,差不多慢到令人发指的程度 是我没编译好还是啥情况?

1
1
发表了问答
2014/06/11 08:40

swift 语言在 jvm上实现 是否可行?

swift语言是基于llvm实现的,是否可以用jvm来实现呢,ARC有那么多限制,何必不二八原则呢,把jvm的gc也用上。只是一些不成熟的想法欢迎讨论。 关于ARC的在jvm上的折衷实现(java 8的注解没了那么多限制,可以在编译时确认无法逃逸的对象栈上分配,在类加载的链接时也可以结合编译时自动加入的注解做点工作,这样gc的压力可大大减轻。)

10
0
发表了问答
2012/06/14 12:57

LLVM在Windows和Linux下哪些IDE支持它?

最近开始吃苹果。但是苹果是公司的,回家不能吃。自己家里想学Objective-C就没辙了。gcc虽然支持Objective-C,但是还是更想用LLVM试试。 在家安装了GNUStep和MinGW版的LLVM,命令行编译倒是可以了。可是咱用惯了IDE,还是希望能在IDE里面编程。但是网上找了好久,像Eclipse和Netbeans都只支持Gcc,不支持LLVM。网上也没有多少如何在Windows和Linux下面使用LLVM的文章,基本上都是怎么编译LLVM或者初级Helloworld的使用。 请问谁...

5
0
发表了问答
2012/11/26 21:29

在Windows下面進行LLVM與CLANG的安裝

需要環境 本文假設你已經有下面的工具安裝在系統中,並且可以正確的使用。 SVN client (這是為了抓最新的llvm與clang的source code) cmake mingw32 用SVN下載source code 假設我們要將所有的LLVM與Clang程式碼放到c:\llvm_src,並且要將最後的llvm放到c:\llvm的目錄下。要注意,clang必須放在llvm source code目錄下的tools\clang目錄,否則會編不出來。 > cd /d c:\ > svn co http://llvm.org/svn/llvm-project/llvm/trunk llv...

7
10
发表了问答
2012/11/25 11:26

为什么gcc和llvm会混在一起?

@踏雁寻花 你好,想跟你请教个问题:为什么gcc和llvm会混在一起?

4
0
发表了问答
2012/04/04 01:30

关于Windows下的Clang的编译环境设置

在Windows下配置LLVM-GCC编译链,可以编译C程序,也可以编译C++程序,但是无法解析C++ STL没有后缀名的头文件,怎么解决?

23
0
发表了问答
2012/11/06 21:06

求教:怎么让clang/llvm的后端支持ptx

怎么让clang/llvm的后端支持ptx? 我下载了clang/llvm的源码并编译生成了相关的工具链,但不知道怎么让其后端支持ptx,该怎么做?

3
0
发表了问答
2012/09/10 14:58

Boost.Spirit+LLVM,双剑合璧开发一个脑残编译器

周末闲来无事,打算拿LLVM构造一个小程序练练手,正巧我最近在玩Brainfuck语言,所以决定拿LLVM构造一个Brainfuck的编译器。 一个典型的编译器分为几个部分: Lex/Parse,构造AST 将AST转换为中间代码,中间代码常用四元式(又叫三地址码) 将中间代码转换为原生目标代码 链接目标代码,生成可执行文件 Parser选用Boost.Spirit,原因很简单,第一,我不喜欢把语法定义放到一个单独的文件里,然后去和lex/yacc之类的工具作斗争;...

1
2
发表了问答
2010/10/27 19:18

Clang 1.1编译后的可执行文件执行速度是gcc4.5的1600倍

编译这个简单文件,Clang 1.1编译后的可执行文件执行速度是gcc4.5的1600倍,已有人在gcc的bug跟踪系统递交了bug报告 哈哈太搞了

5
2
发表了问答
2012/06/10 17:49

Objective-C在LLVM 3.1中的新特性

与C和C++不同,Objective-C中不是由一个标准组织控制的,它一开始完全被Stepstone公司掌控,然而现在却被Apple公司取代了。 这种完全被一个公司掌控的模式可以算是一个优点和或者缺点。例如,C++规范的新版本的C + +11,历时13年完成。相比之下,Objective-C中可以发展地非常迅速,无需由委员会设计的问题所限制。但对应的缺点是在整个设计过程中,因为没有监督,所以基本上无法被标准化的程序语言所接纳。 好了,让我们来看看 ...

2
8
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
16 评论
250 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部