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

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

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

摘要: C/C++ Objective-C++语言Clang编译器前端和LLVM关系 整体架构 广义 LLVM 指的是整个 LLVM 框架,包含 Clang,因为 Clang 是 LLVM 框架的一部分,Clang 是 LLVM 的一个 C/C++ 前端。虽然 Clang 这个前端占的比重比较 ...
数字 IDE 网页 ── \"所见即所得\" 编写 HTML4、HTML5 静态 \"网站站群\" 动态网站,生成 Robots、站点地图,死链检测,强大文本编辑器功能。。。集成中英自动 TTS 文本诵读功能。。。
数字翻译 ── 能 \"批量翻译\" 文档 GUI 用户界面。。。网页浏览 批处理 全文搜索 全文替换 全文删除 全文插入 数据比较 。。。集成中英自动 TTS 文本诵读功能。。。
业务范围:
01、企业 \"内部 | 外部\" 数据管理、分析、挖据
02、企业效率优化专用 APP 程序定制、IT 外包
03、智能数字化系统平台架设、开发、部署、维护
04、高仿真、低成本,可动画-可 VR 数字样机建模、开发、规划
05、企业 Linux 云计算 \"IaaS | SaaS\" 服务器架设、开发、部署、维护
06、\"标准 | 非标\" 设备全流程研发,PLC、单片机、工控系统开发、集成
07、企业 Linux / Windows 平台 PLM、ERP 系统架设、开发、部署、维护
08、企业 Linux / Windows 平台 \"内网 | 外网\" 服务器架设、开发、部署、维护
09、企业微信公众号智能互动营销、策划,Web 网站代码、SEO 排名优化,大数据网络推广
10、企业跨平台、跨硬件、跨浏览器 HTML5 Web 电子商务平台、\"静态 | 动态\" 网站开发、部署、维护
11、企业文档、资料、公司网页多语种翻译,数据资料标准化、版本化、数字化管理的规划、研发、实施
数字 IDE Python ── 支持 \"极速编写-重构\" Python、Django、HTML5、XML、C/C++、Java、Perl、PHP、Ruby、C#、VB .Net 等程序源代码。。。集成了很多常用编程智能辅助工具。。。
AI人工智能 语音助理 人工翻译 教程
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 关键字。



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

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

路过

雷人

握手

鲜花

鸡蛋
纸盒对角封口自动贴标机 ── 透明标签 镭射标签 激光防伪标签 纸盒对角封口 不干胶贴标机
料斗式自动软管贴标机 ── 塑料软管 普通标签 透明标签 外表面圆周 不干胶贴标机
料斗式自动双头软管贴标机 ── 高速 双头 塑料软管 普通标签 透明标签 外表面圆周 不干胶贴标机
自动立式分页纸箱赋码系统 ── 全自动 专业 立式分页 瓦楞纸 水性油墨 贴标 喷码 检测系统
落地式平面贴标机 ── 简易 高速 可连线平面 不干胶贴标机
纸盒顶面、对角封口自动贴标机 ── 透明标签 镭射标签 激光防伪标签 纸盒顶面、对角封口 不干胶贴标机

相关阅读

最新评论

自动立式分页纸箱赋码系统 ── 全自动 专业 立式分页 瓦楞纸 水性油墨 贴标 喷码 检测系统
料斗式自动双头软管贴标机 ── 高速 双头 塑料软管 普通标签 透明标签 外表面圆周 不干胶贴标机
全自动双侧面、卷瓶不干胶贴标机 ── 全自动 扁瓶 单侧面 双侧面 高速圆瓶外表面圆周 普通标签 透明标签 不干胶贴标机
落地式半自动平面贴标机 ── 半自动 经济型 普通标签 透明标签 不干胶 上平面贴标机
全自动高速立式圆瓶贴标机 ── 全自动 高速 普通标签 透明标签 不干胶 立式圆瓶贴标机
全自动单料斗卧式圆瓶贴标机 ── 透明标签 普通标签 医药 口服液 单料斗卧式 高重心 小圆瓶 电池 不干胶贴标机
料斗式自动双头软管贴标机 ── 高速 双头 塑料软管 普通标签 透明标签 外表面圆周 不干胶贴标机
料斗式自动软管贴标机 ── 塑料软管 普通标签 透明标签 外表面圆周 不干胶贴标机

Archiver|Sitemap|小黑屋|   

GMT+8, 2020-4-1 15:02 , Processed in 0.049541 second(s), 27 queries .

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

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

返回顶部