llvm 初探

gcc/g++ 如此成熟,本来以为可能下个20年我们还是用它,但最近看 llvm 似乎大有取代gcc 和 g++ 的架势

1)Apple 编程已经把 llvm 提供developer 使用

2)  开源 3D 架构,Mesa3D 可以使用 llvm 引擎 (当没有 GPU时, Mesa 解释 glsl并执行,速度慢,如果使用 LLVM JIT, 速度大大提升)

3)某些云平台,引入 llvm 提高速度

后端:

llvm 可以运行是  llvm 定义的 中间代码, 这个中间代码 可以 编译为  x86, arm, mips 等目标机的 native 代码。

相对于 gcc/g++  llvm 的优势,就是llvm 可以以 lib形式存在,如此就可以集成到各系统中了

前段:

针对C语言, llvm的前端是 CLAN, 基本支持了 最新的 C/C++ 语言标准, 生成代码比 g++慢一些(可能10%); 但CLAN 是模块化的, 可以对庞大的项目进行重构。

参考资料

主站: http://llvm.org/

开发者谈架构: http://aosabook.org/en/llvm.html

Pyhon 使用 llvm 的 example: http://www.mdevan.org/llvm-py/examples.html

语法制导编译,代码生成使用 llvm: http://www.llvm.org/docs/tutorial/LangImpl1.html

llvm 初探

时间: 2024-10-24 20:36:48

llvm 初探的相关文章

LLVM 初探<一>

一.安装LLVM LLVM是一个低级虚拟机,全称为Low Level Virtual Machine.LLVM也是一个新型的编译器框架,相关的介绍Wikipedia. 现在LLVM的版本已经有很多,根据编译器需要选择下载的版下. GCC/G++版本 >= 4.7,可以选择3.0以上版本,因为C++的新特性. 下载地址:http://llvm.org/releases/ 本人用的系统是Centos,GCC/G++编译器版本为 1 [[email protected] ~]$ g++ --versi

apple swift 初探

今天凌晨,苹果举办了wwdc14,自然又成了各大网站的头条.尽管使用作为mac os的用户已经有接近10年时间,但是对苹果的开发平台却一直没什么了解,一方面是因为并不认可苹果的用户哲学,另一方面由于长期从事c++开发,对objective-c的语法也什么好感,甚至觉得怪异(个人感觉). 下午浏览新闻的时候,却发现wwdc14没有发布硬件产品,却有一门新的开发语言swift发布,按照苹果的说法是"innovative new programming language",不禁对这门语言产生

进阶之初探nodeJS

一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知识稍多,适合初级入门node,固萌生一个想法--想在该篇随笔中,通过一步步编写一个稍大一点的node示例,让我们在整体上更加全面地了解node. so,该篇随笔是建立在"初探nodeJS"之上的,固取名为"进阶之初探nodeJS". 好了,侃了这多,那么我们即将实现一个

从273二手车的M站点初探js模块化编程

前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数据. 273这个M站点是产品推荐我看的.第一眼看这个产品时我就再想他们这个三次加载和翻页按钮的方式,那么小分页的pageIndex是怎么计算的.所以就顺便看了下源码. 提到看源码时用到了Chrome浏览器的格式化工具(还是朋友推荐我的,不过这个格式化按钮的确不明显,不会的话自行百度). 三次加载和分

[转载]HDFS初探之旅

转载自 http://www.cnblogs.com/xia520pi/archive/2012/05/28/2520813.html , 感谢虾皮工作室这一系列精彩的文章. Hadoop集群(第8期)_HDFS初探之旅 1.HDFS简介 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上.它所具有的高容错.高可靠性.高可扩展性.高

MongoDB初探系列之二:认识MongoDB提供的一些常用工具

在初探一中,我们已经可以顺利的将MongoDB在我们自己的机器上跑起来了.但是在其bin目录下面还有一些我们不熟知的工具.接下来,将介绍一下各个小工具的用途以及初探一中MongoDB在data文件夹下创建的文件的用途. 1.bin目录下面的各种小工具简介及使用方式 bsondump.exe 用于将导出的BSON文件格式转换为JSON格式mongo.exe mongoDB的客户端 mongod.exe 用于启动mongoDB的Server mongodump.exe 用于从mongodb数据库中导

Asynchronous Pluggable Protocols 初探

Asynchronous Pluggable Protocols,异步可插入协议,允许开发者创建可插协议处理器,MIME过滤器,以及命名空间处理器工作在微软IE4.0浏览器以及更高版本或者URL moniker中.这涉及到Urlmon.dll动态链接库所公开(输出)的可插协议诸多功能,本文不进行深入的原理讲解,只对它其中之一的应用进行解析,那就是如何将一个应用程序注册为URL协议. 应用场景: tencent协议: 当我们打开"tencent://message/?uin=要链接的QQ号 &qu

重新认识HTML,CSS,Javascript 之node-webkit 初探

今天我们来系统的.全面的 了解一下前端的一些技术,将有助于我们写出 更优秀的 产品 出来. 什么是HTML? HTML 是用来描述网页的一种语言. HTML 包含一些根节点,子节点,文本节点,属性节点,组成, 它通过一系列预定义标签来描述网页结构,如: <title>This is title</title> ,这个表明该网页的标题是 This is title. 什么是CSS? CSS 指层叠样式表 (Cascading Style Sheets),它描述浏览器显示如何显示htm

从LLVM源码学C++(五)

知识点:static,const,static const 详解:转(http://blog.csdn.net/yjkwf/article/details/6067267) const定义的常量在超出其作用域之后其空间会被释放,而static定义的静态常量在函数执行后不会释放其存储空间. static表示的是静态的.类的静态成员函数.静态成员变量是和类相关的,而不是和类的具体对象相关的.即使没有具体对象,也能调用类的静态成员函数和成员变量.一般类的静态函数几乎就是一个全局函数,只不过它的作用域限