python html5 bootstrap 视频教程
德云社区 门户 行业资讯 行业标准 智控标准 查看内容

C/C++ Objective-C++语言Clang编译器前端和LLVM关系 整体架构

2017-5-1 12:59| 发布者: digitser| 查看: 1982| 评论: 0|原作者: Python

摘要: C/C++ Objective-C++语言Clang编译器前端和LLVM关系 整体架构 广义 LLVM 指的是整个 LLVM 框架,包含 Clang,因为 Clang 是 LLVM 框架的一部分,Clang 是 LLVM 的一个 C/C++ 前端。虽然 Clang 这个前端占的比重比较 ...
自动立式分页纸箱赋码系统 ── 全自动 专业 立式分页 瓦楞纸 水性油墨 贴标 喷码 检测系统
C/C++ Objective-C++语言Clang编译器前端和LLVM关系 整体架构

广义 LLVM 指的是整个 LLVM 框架,包含 Clang,因为 Clang 是 LLVM 框架的一部分,Clang 是 LLVM 的一个 C/C++ 前端。虽然 Clang 这个前端占的比重比较大,但是 Clang 依然只是个前端,LLVM 框架可以有很多个前端和很多个后端,只要你想继续扩展。


一般而言,LLVM 指的是实际开发、使用过程中,划分出来的 LLVM。譬如:编译 LLVM 和 Clang 的时候,LLVM 的源码包是不包含 Clang 源码包的,需要单独下载 Clang 源码包。从编译器用户角度看,Clang 使用了 LLVM 中的一些功能,目前所知道的主要是对中间格式代码的优化,或许还有一部分生成代码功能。


LLVM

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 虚拟系统提供了一套中立的中间代码和编译基础设施,并围绕这些设施提供了一套全新的编译策略,譬如:使得优化能够在编译、连接、运行环境执行过程中,以及安装之后以有效方式进行,及其他一些非常有意思的功能。


百度网盘
https://pan.baidu.com/s/1jIzOgzs

可Python Qt/C++ HTML5编程 制作静态网站站群 翻译 "GUI 文档" 的数字 IDE 专业版
http://dts.digitser.cn/zh-CN/ide/idepro/index.html
http://forum.digitser.cn/thread-2184-1-1.html

Clang

Clang 由 Apple 公司开发,Clang 发音为 /klæŋ/,是 LLVM 的一个编译器前端,Clang 是一个采用 C++ 编写、基于LLVM、使用 LLVM BSD 许可协议的 C/C++、Objective-C、Objective-C++ 语言轻量级编译器。


Apple 使用 LLVM 在不支持全部 OpenGL 特性的 GPU (Intel 低端显卡) 上生成代码 (JIT),令程序仍然能正常运行。之后 LLVM 与 GCC 的集成过程引发了一些不快,GCC 系统庞大且笨重,而 Apple 大量使用的 Objective-C 在 GCC 中优先级很低。
同时 GCC 作为一个纯粹编译系统,与 IDE 配合并不优秀。加之许可证方面的要求,Apple 无法使用修改版的 GCC 而闭源。于是 Apple 决定从零开始写 C family 的前端,也就是基于 LLVM 的 Clang。


Clang 的开发目标是提供一个可替代 GCC 的前端编译器。与 GCC 相比,Clang 是一个重新设计的编译器前端,具有很多优点,譬如:模块化、代码简单易懂、占用内存小、容易扩展及重用等。由于 Clang 在设计上的优异性,使得 Clang 非常适合用于设计源代码级别的分析和转化工具。Clang 已被应用到一些重要开发领域,譬如:Static Analysis 就是一个基于 Clang 的静态代码分析工具。


Clang 的目标是超越 GCC 编译器。Clang 编译速度快、占用内存少、具有诊断功能,兼容 GCC。Clang 可满足代码重构、静态分析、代码生成等需求,还允许集成到各种 IDE 中。Clang 编译产出小、出错提示友好,尤其是在比较极端的情况下。


Clang 与 GNU C 语言规范几乎完全兼容;当然,也有部分内容不兼容,譬如:编译命令选项就有差异。Clang 增加了一些额外语法特性,如:C 函数重载,通过 __attribute__((overloadable)) 修饰函数。


2013 年 04 月 Clang 开始全面支持 C++11 标准,实现了 C++1y 特性 (即 C++14,这是 C++ 下的一个小更新版本)。Clang 支持普通 lambda 表达式、返回类型的简化处理、更好的处理 constexpr 关键字。



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

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

路过

雷人

握手

鲜花

鸡蛋
AI人工智能 语音助理 人工翻译 教程

相关阅读

最新评论

Qt 6.5.1 官方中文文档编制 手册教程 帮助文件 人工翻译
Qt 6.5.1 官方中文文档编制 手册教程 帮助文件 人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 6.5.1。 Qt 6.5.1 中文文档编制[35/2024-10-24]
Qt 6.5.1 官方中文文档编制 手册教程 人工翻译更新日志
Qt 6.5.1 官方中文文档编制 手册教程 人工翻译更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Qt 6.5.1。 Qt 6.5.1 中文文档编制采[24/2024-10-24]
数字 Python IDE 2024 注册机 注册码生成器 附详细破解方法
数字 Python IDE 2024 注册机 注册码生成器 附详细破解方法 数字 Python IDE 目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于多版本 多文档 多工程并行[22/2024-10-24]
数字翻译 2024 注册机 注册码生成器 内存破解器 附详细用法
数字翻译 2024 注册机 注册码生成器 内存破解器 附详细用法 数字翻译目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于 HTML 文档本地化 (面向高精度 超[24/2024-10-24]
数字 Python IDE 2023 注册机 注册码生成器 附详细破解方法
数字 Python IDE 2023 注册机 注册码生成器 附详细破解方法 数字 Python IDE 目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于多版本 多文档 多工程并行[22/2024-10-24]
数字翻译 2023 注册机 注册码生成器 内存破解器 附详细用法
数字翻译 2023 注册机 注册码生成器 内存破解器 附详细用法 数字翻译目前还在不断研发 进步中,虽不太成熟,但其新理念很有特色 特别适于 HTML 文档本地化 (面向高精度 超[21/2024-10-24]
CSS3 官方中文文档编制 手册教程 人工翻译 更新日志
CSS3 官方中文文档编制 手册教程 人工翻译 更新日志 CSS3 中文文档编制采用机器辅助 + 全人工翻译,完全采用 数字翻译 的文档翻译流程进行汉化 (未采用任何第 3 方工具),[1592/2022-07-31]
CSS3 官方中文文档编制 手册教程 帮助文件 人工翻译
CSS3 官方中文文档编制 手册教程 帮助文件 人工翻译 CSS3 中文文档编制采用机器辅助 + 全人工翻译,完全采用 数字翻译 的文档翻译流程进行汉化 (未采用任何第 3 方工具),[1723/2022-07-31]
SolidWorks 2020 非对称Conic Rho圆角 抽壳出现模型穿刺
SolidWorks 2020 非对称Conic Rho圆角 抽壳出现模型穿刺 标准对称圆角最常用,但有时偶尔也会用到非对称圆角。 特别是模具、五金、电子、手饰、汽车、家具、玩具、等对圆[1414/2022-05-25]
NumPy 1.22 官方中文文档编制 手册帮助 更新日志
NumPy 1.22 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 NumPy 1.22。 NumPy 1.22 中文文档编制采用[997/2022-05-22]
NumPy 1.22 官方中文文档编制 手册帮助 全人工翻译
NumPy 1.22 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 NumPy 1.22。 NumPy 1.22 中文文档编制采[1164/2022-05-22]
Pillow 9.1.1 官方中文文档编制 手册帮助 更新日志
Pillow 9.1.1 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Pillow 9.1.1。 Pillow 9.1.1 中文文档编[1048/2022-05-22]
Pillow 9.1.1 官方中文文档编制 手册帮助 全人工翻译
Pillow 9.1.1 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 Pillow 9.1.1。 Pillow 9.1.1 中文文档[1001/2022-05-22]
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 更新日志
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 更新日志 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 PyMuPDF 1.19.6。 PyMuPDF 1.19.6 中文[1619/2022-05-22]
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 全人工翻译
PyMuPDF 1.19.6 官方中文文档编制 手册帮助 全人工翻译 以后不再上传 en-US 官方原版文档编制,目前上传的最新 zh-CN 人工翻译版本为 PyMuPDF 1.19.6。 PyMuPDF 1.19.6 中[1480/2022-05-22]

Archiver|Sitemap|小黑屋|德云社区   

GMT+8, 2024-11-23 07:46 , Processed in 0.031009 second(s), 27 queries .

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

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

返回顶部