LLVM简要概述.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LLVM简要概述

LLVM简要概述 作者:赵玉武 时间:2015-11-25 目 录 1.LLVM简介 1 1.1.LLVM的主要项目有: 1 1.2.发展历程 4 2.LLVM/Clang的使用 4 2.1安装 4 2.2 GCC介绍 6 1. GCC简介 7 2. GCC强大的背后 8 3. GCC的多样性 9 3.1 ? PC开发 9 3.2 ? 嵌入式开发 10 How to set TCP_NODELAY on BSD socket on Solaris? 11 2 Answers 11 1.LLVM简介 LLVM 命名最早源自于底层虚拟机(Low Level Virtual Machine)的缩写,由于命名带来的混乱,目前LLVM就是该项目的全称。LLVM 核心库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。LLVM的项目是一个模块化和可重复使用的编译器和工具技术的集合。LLVM是伊利诺伊大学的一个研究项目,提供一个现代化的,基于SSA的编译策略能够同时支持静态和动态的任意编程语言的编译目标。自那时以来,已经成长为LLVM的主干项目,由不同的子项目组成,其中许多正在生产中使用的各种 商业和开源的项目,以及被广泛用于学术研究。 1.1.LLVM的主要项目有: 1、LLVM Core库提供一个源代码——独立于目标优化器,连同代码生成的支持许多主流的cpu(以及一些不太常见的!)这些库是建立在一个指定好代码表示称为LLVM中间表示(“LLVM IR”)。LLVM核心库良好的文档记录,它特别容易发明自己的语言(或港口现有的编译器)使用LLVM作为优化和代码生成器. 2、Clang是一个“LLVM本地”C / C++ / objective - C编译器,旨在提供非常快速编译(如呢3 x速度比GCC当编译objective - c代码在调试配置),非常有用的错误和警告消息构建水平重要来源,并提供一个平台工具。Clang Static Analyzer是一种工具,可以自动发现bug的代码,并且是一个很好的例子的工具,它可以使用Clang前端作为一个库来解析C / C++代码。 3、dragonegg集成了LLVM优化和带有GCC解析器的代码生成器。这允许LLVM编译Ada、Fortran和其他支持GCC编译器编译的前端语言,和访问C功能不支持的Clang。 4、LLDB项目建立在LLVM提供的库和Clang提供本地调试器。它使用Clang AST和表达式解析器,LLVM JIT,LLVM反汇编器等。它也是超级快的和更多的内存效率比GDB在加载符号。 5、libc + +和libc + + ABI项目提供了一个标准的符合性和高性能的c++标准库的实现,包括完全支持c++ 11。 6、compiler-rt项目提供了高调谐低级代码生成器的实现支持的活动,如“__fixunsdfdi”和其他调用时生成一个目标没有短的本地指令序列来实现核心红外操作。它还提供了运行时库的实现动态测试工具等AddressSanitizer,ThreadSanitizer,MemorySanitizer,DataFlowSanitizer. 7、OpenMP子项目提供了一个OpenMP运行时使用OpenMP实现的Clang。 vmkit项目的实现Java和.NET虚拟机是建立在LLVM技术。 9、Polly项目实现一套缓存位置优化以及auto-parallelism和向量化使用多面体模型。 10、libclc项目旨在实现OpenCL标准库。 11、Klee项目实现了一个“具有象征意义的虚拟机”使用一个定理验证通过程序来评估所有动态路径为了找到缺陷和证明函数的性能。Klee的一个主要特征是, 如果它检测到一个bugs,它能产生一个testcase(测试用例)。 12、SAFECode项目是一个内存安全C / C++编译器程序。这个工具代码中带有运行时检查,检测内存中是否有安全性错误(例如:缓冲区溢出)。它可以用来保护软件免受安全攻击,也可以用作安全错误内存调试工具像Valgrind。 13、lld项目旨在Clang / llvm内置链接器。目前,Clang必须调用系统链接器来产生可执行文件。 除了官方LLVM的子项目,有各种各样的其他项目使用组件LLVM的各种任务。通过这些外部项目可以使用LLVM编译Ruby,Python, Haskell,Java,D语言,PHP,Pure,Lua和许多其他语言。LLVM的主要优势是它的多功能性,灵活性,和可重用性,这就是为什么它被用于多种不同的任务:从做轻量级JIT编译Lua等嵌入式语言Fortran编译

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档