python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4151|回复: 0

LLVM ── 以C++编写Apple支持的compiler编译器框架系统

[复制链接]

185

主题

204

帖子

1175

积分

工程师

Rank: 5Rank: 5

金钱
759
金币
15
威望
0
贡献
0
发表于 2017-5-1 11:30:33 | 显示全部楼层 |阅读模式
AI人工智能 语音助理 人工翻译 教程
LLVM ── 以C++编写Apple支持的compiler编译器框架系统

LLVM 是构架编译器 (compiler) 的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间 (compile-time)、链接时间 (link-time)、运行时间 (run-time) 及空闲时间 (idle-time)。


Apple 是 LLVM 计划的主要资助者,LLVM 也相当于是由 Apple 官方支持的编译器。


LLVM 的命名源于底层虚拟机 Low Level Virtual Machine,目前 LLVM 是该项目的全称。LLVM 项目是一个模块化和可重复使用的编译器和工具技术的集合。LLVM 提供了一个现代化的,基于 SSA 的编译策略,能同时支持任意编程语言的静态、动态编译目标。


LLVM 和大家所熟知的 JVM、.net Runtime 虚拟机不同,LLVM 虚拟系统提供了一套中立的中间代码和编译基础设施,并围绕这些设施提供了一套全新的编译策略,譬如:使得优化能够在编译、连接、运行环境执行过程中,以及安装之后以有效方式进行,及其他一些非常有意思的功能。


LLVM 对开发者保持开放,并兼容已有脚本。LLVM 核心库提供了与编译器相关的支持,可作为多种语言编译器的后台来使用。LLVM 能进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。


LLVM 项目提供了越来越多的可以使用的、编译器以外的其他工具。譬如:代码静态检查工具 LLVM/Clang Static Analyzer,这是 Clang 的一个子项目,能使用同样的 Makefile 生成 HTML 格式的分析报告。


2000 年,LLVM 计划最初由 University of Illinois at Urbana-Champaign (伊利诺伊大学香槟分校) 的 Chris Lattner 主持开展。


2006 年 Chris Lattner 加盟 Apple Inc。并致力于 LLVM 在 Apple 开发体系中的应用。Apple 将 LLVM 用于 OpenCL 流水线优化,Xcode 使用 llvm-gcc 编译代码。


2011 年12 年 02 日 LLVM 3.0 发布,LLVM 包括了一系列子项目,如 C/C++/Objective-C 前端 Clang 3.0 改进了C++程序编译支持;改进 C++ 2011 标准支持;实现支持即将发布的 C1x 标准的某些特性;更快的生成代码,更快的编译等。


2012年 LLVM 荣获 ACM 软件系统奖。


MicroSoft Windows 上可用 Mingw 编译 LLVM,或用 MicroSoft Visual Studio 编译 LLVM。


Linux上可用 GCC 编译 LLVM,或以 Clang 编译 LLVM。


Mac OS X 上 XCode 自带 LLVM。


timg.jpg


主要特性

01、现代化设计

LLVM 设计是高度模块化的,使得其代码更为清晰,更便于排查问题所在。


02、 语言无关的中间代码

LLVM 和大家所熟知的 JVM、.net Runtime 虚拟机不同,LLVM 虚拟系统提供了一套中立的中间代码和编译基础设施,并围绕这些设施提供了一套全新的编译策略。


这使得透过 LLVM 能将不同的语言相互连结起来,也使得 LLVM 能够紧密地与 IDE 交互和集成。


另一方面,发布中间代码而非目标代码,能在目标系统上更好地发挥其潜能而又不伤害可调试性;譬如:在目标系统上针对本机的硬件环境产生目标代码,但又能够直接通过中间代码来进行行级调试。


03、作为工具和函数库

使用 LLVM 提供的工具,可比较容易地实现新编程语言的优化编译器或 VM,或为现有编程语言引入一些更好的优化、调试特性。


版本历史
时间
版本
说明
备注
2003 年 10 月 24 日LLVM 1.0首次发布
2007 年 05 月 23 日LLVM 2.0
2009 年 10 月 23 日LLVM 2.6
首次包含 Clang
2011 年 12 月 02 日LLVM 3.0全新寄存器分配器,大幅性能提升;完全支持 C++ 内存模型中的全新原子操作;改进 MIPS 后端;支持 gprof/gcov 风格的 profile 信息。
2012 年 05 月 22 日LLVM 3.1用于检测内存错误的新 Address Sanitizer 工具新增 ARM 集成汇编工具
2015 年 05月 26 日LLVM 3.6大量 bug 修复,优化改进,Clang 支持更多被提议的 C++1z 功能,更好的原生 Windows 兼容性,本地对象文件中嵌入 LLVM IR 等绑定 Go 语言
2015 年 09 月 02 日LLVM 3.7
完全支持 OpenMP 3.1(behind a flag),the On Request Compilation (ORC) JIT API,一个全新后端用于 Berkeley Packet Filter (BPF)、Control Flow Integrity 检查,新 Clang 警告
2017 年 03 月 13 日LLVM 4.0

长按二维码关注 "德云社区" ,点击最下方 "阅读原文" 了解更多资讯

版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。

AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区 |网站地图  

GMT+8, 2024-4-27 05:57 , Processed in 0.029549 second(s), 30 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表