作者:snsn1984

在LLVM源码的目录下,有一个目录叫做examples,这个目录下边有几个LLVM的例子,初学者一般不会太关注这些例子,但是这些例子确实是精华中的精华,在LLVM的学习过程中不可避免的要对这些例子所涉及内容要精通。所以希望大家一定要对这些例子重视起来,它们都是经典中的经典。从我个人而言,从这些例子中学到了很多,文档说了很多都没能让人明白的东西,在这里,一个简单的例子就讲的很清楚了。

        首先,要想执行这些例子,可以在cmake的时候加上参数 -DLLVM_BUILD_EXAMPLES=ON 。这样在最终编译出的bin目录下的可执行文件中,就多了这几个例子的可执行文件,运行这些文件就可以看到这些例子的输出。

         接下来,我们看看这些例子到底都讲了什么东西。

        llvm/examples/BrainF (Need To Do)

        llvm/examples/ExceptionDemo  (Need To Do)从名字上来看,这个例子介绍的是LLVM的Exception模型,但是这块我目前还没有涉猎,没有进行研究,所以暂时不做介绍。

        llvm/examples/Fibonacci    这个例子很像HowToUseJIT,所做的工作差不多,创建Module,创建Function,然后使用JIT,然后让函数运行。唯一的不同之处是这个例子实现的是Fibonacci,并且在里面展示了如何创建了判断分支语句。

        llvm/examples/HowToUseJIT   这个例子以一个很简单的程序演示了如何使用JIT,同时因为要演示使用JIT,顺便构建了一个新的Module,并且在这个Module中构建了两个函数,这两个函数之间还存在调用关系。所以这个例子不仅仅展示了如何使用JIT,还顺便做了ModuleMaker的工作。

        llvm/examples/Kaleidoscope  这个例子和后面的OCaml-Kaleidoscope都有对应的文档专门介绍:http://llvm.org/docs/tutorial/ 。它展示了如何在LLVM之上构建一个支持一门自己定义的编程语言的编译器。这不但有利于理解编译器的工作流程,也非常有利于理解LLVM。是非常适合刚接触LLVM的人学习的一个例子,因为它配有详细的文档说明,并且贯穿了编译器的整个流程,没有理由不认真的学习它。

        llvm/examples/ModuleMaker  这个例子展示了如果创建Module,并且在它之中创建函数的过程。代码很少,但是行行都是经典,是一直可以用来参考的例子。基本上参照它,就可以完成一个Module的大部分功能的创建。

        llvm/examples/OCaml-Kaleidoscope 这个例子和Kaleidoscope例子的区别在于,它是Objective Caml版本的Kaleidoscope。除此之外,并无其他。

        llvm/examples/ParallelJIT 这个例子是个并行版本的HowToUseJIT。所以适合需要了解如何在LLVM之下生成一个Module,并且要支持并行和JIT的人去认真学习一下。代码不多,但是把问题介绍的很清楚。

       

[置顶] LLVM每日谈之十五 LLVM自带的examples的更多相关文章

  1. LLVM每日谈之十九 LLVM的第一本系统的书<Getting Started with LLVM Core Libraries>

    作者:史宁宁(snsn1984) LLVM最终有了一本系统的书了--<Getting Started with LLVM Core Libraries>. 这本书号称是LLVM的第一本书, ...

  2. [置顶] 【Git入门之十五】Github操作指南

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374633 最终篇,介绍一下Github网站的使用,主要是翻译为主,简化了 ...

  3. LLVM每日谈之二十 Everything &amp;&amp; Clang driver

    作者:史宁宁(snsn1984) 近期在读<Getting Started with LLVM Core Libraries>.这是读的第一本LLVM的书.非常多地方尽管讲的是自己知道的东 ...

  4. LLVM每日谈21 一些编译器和LLVM/Clang代码

    作者:闪亮宁(snsn1984) 一些自己的收藏LLVM/Clang代码,而他自己写一些一点点LLVM/Clang译器的代码.在这里把这些代码库分享出来,欢迎大家交流探讨. 1.crange http ...

  5. [置顶] 【Git入门之十四】Git GUI

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12374495 文章都快写完了,Git GUI才浮出水面,很多人要骂我,这么方 ...

  6. [置顶] 【Git入门之十】Rebase操作

    原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/12309627 Rebase,衍合?变基?唉,我也不知道要怎么翻译合适...变 ...

  7. Qt浅谈之四十五QSplitter实现自由伸缩滑动窗口

    一.简介 最近看到一篇Qt实现伸缩滑动的窗口的文章,但其代码不完整.便在此重新书写了完整的代码,并开源出来.窗口的中央有滑动条可以动态改变子窗口的大小,隐藏的按钮可以快速伸缩子窗口.其效果图如下: 二 ...

  8. 每日算法之三十五:Wildcard Matching

    模式匹配的实现,'?'代表单一字符,'*'代表随意多的字符.写代码实现两个字符串是否匹配. Implement wildcard pattern matching with support for ' ...

  9. [置顶] JDK工具(零)--简要介绍JDK1.6自带的42个工具

    Java的开发人员肯定都知道JDK的bin目录中有“java.exe”和“javac.exe”这两个命令行工具, 但并非所有的Java程序员都了解过JDK的bin目录之中其它命令行程序的作用. JDK ...

随机推荐

  1. OSGi 学习之路(4) - osgi的模块化 java在模块化的局限性

    底层代码可见性控制 Java提供了private,public,protected和package private(无修饰符)这四种访问控制级别,不过这仅仅提供了底层的OO数据封装特性.包这个概念确实 ...

  2. Swift - AnyObject与Any的区别

    1,AnyObject :代表任何class类型的对象实例. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class Man{ }   class Woman{ ...

  3. 攻略三战的完美体验3Castle Fantisia阿兰·梅希亚战争艾伦西战记它包含重做版本(这是新的艾伦·梅希亚大战)

    (城堡幻想曲3,纠正大家个错误哦,不是圣魔大战3,圣魔大战是城堡幻想曲2,圣魔大战不是个系列,艾伦西亚战记==艾伦希亚战记,一个游戏日文名:タイトル キャッスルファンタジア -エレンシア戦記-リニュー ...

  4. [Android学习笔记]Fragment使用

    一.android.app.Fragment 与 android.support.v4.app.Fragment 区别 support.v4.app.Fragment是为了给低版本Android使用的 ...

  5. Effective C++:规定12:不要忘了复制的对象时,它的每一个组成部分

    (一个) 继承制度的声明: class Date {...}; class Customer { public: ... private: string name; Date lastTransact ...

  6. 站在OC的基础上快速理解Swift的类与结构体

    阅读此文章前,您已经有一定的Object-C语法基础了!) 2014年,Apple推出了Swift,最近开始应用到实际的项目中. 首先我发现在编写Swift代码的时候,经常会遇到Xcode不能提示,卡 ...

  7. Android学习4、Android该Adapter

    一.Adapter介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for th ...

  8. [Android学习笔记]jackson库的使用

    Jackson库一般用于序列化和反序列化操作,通常会涉及到的操作是: 1. Java Object -> Json String 2. Java Object -> Xml String ...

  9. 冒泡排序 JAVA版

    冒泡排序 算法思想是每次从数组末端开始比较相邻俩元素,把第i小的冒泡到数组的第i个位置.i从0一直到N-1从而完成排序.当然也可以从数组开始端开始比较相邻两元素,把第i大的冒泡到第N-i个位置.I从0 ...

  10. A Game of Thrones(14) - Catelyn

    Ned and the girls were eight days gone when Maester Luwin came to her one night in Bran’s sickroom, ...