LLVM每日谈之六 LLVM的源码结构

 作者:snsn1984

这里简单介绍下LLVM的源码结构,让大家知道LLVM的每个文件夹都放的是什么内容。

参考文档: http://llvm.org/docs/GettingStarted.html#getting-started

llvm/examples

这个目录主要是一些简单例子,演示如何使用LLVM IR 和 JIT。还有建立一个简单的编译器的例子的代码。

建立简单编译器的文档地址:http://llvm.org/docs/tutorial/

llvm/include

这个目录主要包含LLVM library的公共头文件。

llvm/lib

这个目录包含了大部分的LLVM的源码。在LLVM中大部分的源码都是以库的形式存在的,这样不同的工具之前就很容易共用代码。

llvm/projects

这个目录包含着一些依赖LLVM的工程,这些工程严格来说又不算LLVM一部分。

llvm/runtimes

这个目录包含了一些库,这些库会编译成LLVM的bitcode,然后当clang linking 程序的时候使用。

llvm/test

这个目录是LLVM的测试套件,包含了很多测试用例,这些测试用例是测试LLVM的所有基本功能的。

llvm/tools

这个目录理是各个工具的源码,这些工具都是建立在刚才上面的那些库的基础之上的。也是主要的用户接口。

llvm/utils

这个目录包含了一些和LLVM源码一起工作的应用。有些应用在LLVM的编译过程中是不可或缺的。

时间: 2024-09-27 16:01:30

LLVM每日谈之六 LLVM的源码结构的相关文章

LLVM每日谈之七 Clang

作者:snsn1984         官方介绍Clang是LLVM native的一个面向C/C++/Objective-C的编译器,目标是要提供一个编译非常快的编译器.他们宣称在Debug模式下编译Objective-C比GCC快3倍.至于是否能比GCC快这么多,总有人去做对比,大家可以搜索下,好像确实快了些. Clang一般被说是LLVM的一个前端.关于前端的定义,大家可以从LLVM每日谈之二里面看到前端在整个LLVM体系中的位置.Clang当初的定位就是要做下一个十年中一个伟大的前端,这

LLVM每日谈之四 Pass初探

作者:snsn1984 LLVM 的Pass框架是LLVM系统的一个很重要的部分.每个Pass都是做优化或者转变的工作,LLVM的优化和转换工作就是由很多个Pass来一起完成的. 所以按照我的理解,Pass就是LLVM系统转化和优化的工作的一个节点,每个节点做一些工作,这些工作加起来就构成了LLVM整个系统的优化和转化.Pass架构这么做的话,可重用性非常好,你可以选择已有的一些Pass,自己去构建出自己想要的优化和转化效果.并且自己也可以重新写Pass去做自己想要的优化和转变,因为每个Pass

jQuery源码分析-03构造jQuery对象-源码结构和核心函数_jquery

作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 毕竟是边读边写,不对的地方请告诉我,多多交流共同进步.本章还未写完,完了会提交PDF. 前记: 想系统的好好写写,但是会先从感兴趣的部分开始. 近期有读者把PDF传到了百度文库上,首先感谢转载和传播,但是据为已有并设置了挺高的财富值才能下载就不好了,以后我整理好了会传到文库上.请体谅一下. 3. 构造jQuery对象 3.1 源码结构 先看看总体结构,再做分解: 复制代码 代码如下: (funct

《Android的设计与实现:卷I》——第1章 1.4Android源码结构

1.4 Android源码结构 在深入学习Android源码前,有必要先熟悉源码结构.只有熟悉了源码结构,分析源码的时候才能有的放矢,迅速定位到所需源码.要查看源码结构,只需要在Android源码根目录下执行以下命令: allong@android:~/android/jellybean$ tree -L 1 执行完毕后,终端中显示出源码的树形结构.表1-6中列出了源码中各目录的主要内容. 应用层源码位于packages目录下,主要包含核心应用程序.内容提供器(provider).输入法等:应用

《深入解析Android 虚拟机》——第1章,第1.2节分析Android源码结构

1.2 分析Android源码结构获得Android源码后,可以将整个源码分为如下3个部分. Core Project:核心工程部分,这是建立Android系统的基础,被保存在根目录的各个文件夹中.External Project:扩展工程部分,可以使其他开源项目具有扩展功能,被保存在"external"文件夹中.Package:包部分,提供了Android的应用程序.内容提供者.输入法和服务,被保存在"package"文件夹中.无论是Android 1.5还是An

《深入解析Android 虚拟机》——1.2 分析Android源码结构

1.2 分析Android源码结构 获得Android源码后,可以将整个源码分为如下3个部分. Core Project:核心工程部分,这是建立Android系统的基础,被保存在根目录的各个文件夹中.External Project:扩展工程部分,可以使其他开源项目具有扩展功能,被保存在"external"文件夹中.Package:包部分,提供了Android的应用程序.内容提供者.输入法和服务,被保存在"package"文件夹中.无论是Android 1.5还是A

LLVM每日谈之十三 使用LLVM自带的PASS

作者:snsn1984 PS:最近一段时间,投入在LLVM上的时间有些减少.差点把对它的研究断掉,今天开始继续.对LLVM的研究需要很长一段时间的坚持不懈才可以彻底搞明白. 前面已经介绍过如何写自己的PASS,并且也针对一个简单的PASS进行了分析和介绍.相信大家也可以从LLVM源码中找到很多的PASS,这些PASS太多,他们每个到底是做什么用?如何去调用这些系统已经有的PASS?这就是这次每日谈要关注的问题. 在文档 http://llvm.org/docs/Passes.html 中,列出了

LLVM每日谈之二十一 一些关于编译器和LLVM/Clang的代码

作者:史宁宁(snsn1984) 自己收集了一些LLVM/Clang的代码,并且自己也在一点一点的写一些LLVM/Clang以及编译器的代码,在这里把这些代码库分享出来,欢迎大家交流探讨. 1.crange https://github.com/shining1984/crange 这是一个python写的调用libclang去定位和交叉检索C/C++源码的工具.这个工具不是我写的,我给fork过来了,方便自己加一些自己的代码. 2. libclang-examples https://gith

LLVM每日谈之十七 LLVM/Clang的学习的思考

        之前一直关注LLVM和基于LLVM的工程(工具)多一些,对Clang和基于Clang的工具关注不是很多.这就导致了一个很严重的问题,觉的如果要深入理解Clang就必须要去读Clang的源码,这个想法不是不对,但是这不是唯一的路,而且Clang的源码太多,容易让人无法坚持下去,也容易让人无从下手.         了解了Clang的一些工具之后,觉的这些工具是一个很好的切入点,简单.方便使用.代码量不大,却可以完成很多以前觉的是很难实现的工作.这让我觉的找到了可以深入学习Clang