LLVM每日谈之一 LLVM是什么

简介: 作者:snsn1984 写在前面的话: 最近接触llvm比较多,在这个上面花了不少的时间。感觉llvm要完全理解透是个很不容易的事情,需要在学习过程中好好的整理下自己的思路。
作者: snsn1984
写在前面的话:
最近接触llvm比较多,在这个上面花了不少的时间。感觉llvm要完全理解透是个很不容易的事情,需要在学习过程中好好的整理下自己的思路。刚好又阅读了开源项目Storm的作者Nathan Marz的博客《You should blog even if you have no readers》,就打开自己的blog,开始了这个llvm每日谈的系列。希望自己能坚持的久一点,多写写llvm的每个方面,多写写自己的理解。
欢迎感兴趣的人一起探讨研究。

llvm是什么?
llvm是low level virtual machine的简称,其实是一个编译器框架。llvm随着这个项目的不断的发展,已经无法完全的代表这个项目了,只是这种叫法一直延续下来。
llvm是一个开源的项目。它最早的时候是Illinois的一个研究项目,主要负责人是Chris Lattner,他现在就职于Apple. Apple 目前也是llvm项目的主要赞助者之一。
llvm的主要作用是它可以作为多种语言的后端,它可以提供可编程语言无关的优化和针对很多种CPU的代码生成功能。此外llvm目前已经不仅仅是个编程框架,它目前还包含了很多的子项目,比如最具盛名的clang.
llvm的优点是开源,有一个表达形式很好的IR语言,模块化作的特别好。
llvm这个框架目前已经有基于这个框架的大量的工具可以使用。
llvm的官方网站地址是:llvm.org。在这里可以下载最新的发布代码,也可以找到介绍llvm的相关文档。

附录:llvm目前支持的工具(部分描述来自网络)
llvm-as 将人类可读的 .ll 文件汇编成字节代码
llvm-dis 将字节代码文件反编成人类可读的 .ll 文件
opt 在一个字节代码文件上运行一系列的 LLVM 到 LLVM 的优化
llc 为一个字节代码文件生成本机器代码
lli 直接运行使用 JIT 编译器或者解释器编译成字节代码的程序
llvm-link 将几个字节代码文件连接成一个
llvm-ar 打包字节代码文件
llvm-ranlib 为 llvm-ar 打包的文件创建索引
llvm-nm 在 打印出LLVM中间格式或者object文件的符号表(2014年5月14日更新)
llvm-prof 将 'llvmprof.out' raw 数据格式化成人类可读的报告
llvm-ld 带有可装载的运行时优化支持的通用目标连接器
llvm-config 打印出配置时 LLVM 编译选项、库、等等
llvmc 一个通用的可定制的编译器驱动
llvm-diff 比较两个模块的结构
bugpoint 自动案例测试减速器
llvm-extract 从 LLVM 字节代码文件中解压出一个函数
llvm-bcanalyzer 字节代码分析器 (分析二进制编码本身,而不是它代表的程序)
FileCheck 灵活的文件验证器,广泛的被测试工具利用
tblgen 目标描述阅读器和生成器
lit        LLVM 集成测试器,用于运行测试
AddressSanitizer  一个快速内存错误探测器
目录
相关文章
|
7月前
|
Ubuntu
LLVM编译源码
LLVM编译源码
175 0
|
1月前
|
前端开发 编译器 C++
什么是LLVM项目?
什么是LLVM项目?
64 37
|
7月前
|
编译器 C语言 C++
CMake基础(9)使用Clang编译
CMake基础(9)使用Clang编译
531 0
|
前端开发 IDE 编译器
LLVM编译器前端 Clang 简介
昨天晚上安装rails的开发环境,被ruby的编译搞的有点崩溃。下载的ruby的源码不能用系统自带的gcc -4.21编译,也不能用系统自带的clang进行编译,必须下载并使用gcc -4.2进行编译才能通过。今天稍微看看编译器的一些背景。
566 0
LLVM编译器前端 Clang 简介
|
前端开发 Unix C语言
使用nasm和clang
nasm编译 nasm -f macho64 --prefix _ demo.asm # --prefix是为gobal的标签添加前缀, 链接时根据的都是以_开头的 clang编译 clang test.c demo.o
1962 0
|
Shell C语言 C++
安装llvm、clang指定使用非默认gcc、g++
安装LLVM、clang时不使用系统默认的gcc、g++版本: 官方手册安装文档: We use here the command-line, non-interactive CMake interface.
4792 0
|
C++
Devirtualization in LLVM and Clang
Devirtualization in LLVM and Clang This blog post is part of a series of blog posts from students who were funded by the LLVM Found...
1366 0
|
Linux
LLVM每日谈之二十三 LLVM/Clang编译Linux内核资料
作者:史宁宁(snsn1984) 之前有朋友问到这个问题,是否有使用LLVM/Clang编译Linux内核的,随手找了一些相关资料,在这里贴出来,与大家共享。 网址:http://llvm.
1824 0