LLVM每日谈之十五 LLVM自带的examples

简介:  作者:snsn1984            在LLVM源码的目录下,有一个目录叫做examples,这个目录下边有几个LLVM的例子,初学者一般不会太关注这些例子,但是这些例子确实是精华中的精华,在LLVM的学习过程中不可避免的要对这些例子所涉及内容要精通。

 作者: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的人去认真学习一下。代码不多,但是把问题介绍的很清楚。
       
目录
相关文章
|
6月前
|
Ubuntu
LLVM编译源码
LLVM编译源码
160 0
|
13天前
|
前端开发 编译器 C++
什么是LLVM项目?
什么是LLVM项目?
58 37
|
6月前
|
编译器 C语言 C++
CMake基础(9)使用Clang编译
CMake基础(9)使用Clang编译
478 0
|
前端开发 IDE 编译器
LLVM编译器前端 Clang 简介
昨天晚上安装rails的开发环境,被ruby的编译搞的有点崩溃。下载的ruby的源码不能用系统自带的gcc -4.21编译,也不能用系统自带的clang进行编译,必须下载并使用gcc -4.2进行编译才能通过。今天稍微看看编译器的一些背景。
561 0
LLVM编译器前端 Clang 简介
|
编译器 iOS开发 Windows
带你读《LLVM编译器实战教程》之一:构建和安装LLVM
本书的前半部分将向您介绍怎么样去配置、构建、和安装LLVM的不同软件库、工具和外部项目。接下来,本书的后半部分将向您介绍LLVM的各种设计细节,并逐步地讲解LLVM的各个编译步骤:前段、中间表示(IR)、后端、即时编译(JIT)引擎、跨平台编译和插件接口。本书包含有大量翔实的示例和代码片段,以帮助读者平稳顺利的掌握LLVM的编译器开发环境。
20197 0
|
Android开发 C语言 C++
《深入理解LLVM》第一章 LLVM简介
第一章 LLVM简介 作者:史宁宁 1.1 LLVM是什么 LLVM是什么?这是一个虽然基础,但是也曾经让很多新入门的人迷惑的一个问题。从字面上来讲,LLVM(Low Level Virtual Machine)是一个底层虚拟机,LLVM曾经有一部分功能对虚拟机有所帮助。
2535 0
|
测试技术 编译器 流计算
LLVM每日谈之一 LLVM是什么
作者:snsn1984 写在前面的话: 最近接触llvm比较多,在这个上面花了不少的时间。感觉llvm要完全理解透是个很不容易的事情,需要在学习过程中好好的整理下自己的思路。
1571 0
|
C++ iOS开发 小程序
深入研究Clang(十) Clang Static Analyzer简介
Clang Static Analyzer 官网地址:http://clang-analyzer.llvm.org/ Clang Static Analyer是一个源码分析工具,它可以发现C、C++和Objective-C程序中的bug。
2315 0
|
Linux
LLVM每日谈之二十三 LLVM/Clang编译Linux内核资料
作者:史宁宁(snsn1984) 之前有朋友问到这个问题,是否有使用LLVM/Clang编译Linux内核的,随手找了一些相关资料,在这里贴出来,与大家共享。 网址:http://llvm.
1816 0
从今天起,写一本关于LLVM的书----《深入理解LLVM》
       一直想写一本关于深入学习LLVM的书,这个想法有了很久了,但是一直没有机会动手。现在虽然很忙,但是依然觉的有必要马上动手去做这个事情。任何事情都是一点一点积累起来的,如果一直不动手,什么都做不成。
1622 0