开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 5927|回复: 31
收起左侧

[易语言纯源码] llvm编译器框架下clang编译器<易语言SDK>

[复制链接]
结帖率:100% (5/5)
发表于 2020-3-13 19:02:41 | 显示全部楼层 |阅读模式   重庆市重庆市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 心冷、鱼儿 于 2020-3-13 19:05 编辑

LLVM是Apple官方支持的编译器,而该编译器的前端是Clang,这两个工具都被集成到了Xcode里面。


在很长一段时间里,Apple一直使用GCC作为官方的编译器。GCC作为开源世界的编译器标准一直做得不错,但Apple对编译工具提出了更高的要求。


仗着自己在开源社区的地位,GCC 开发者对Apple的Objective-C语言新增的很多特性不予理睬,甚至当Apple想做的很多功能需要用模块化的方式来调用 GCC时,GCC却一直不给做。一般的公司遇到这种情况,可能都有些受不了,何况是乔布斯领导的Apple呢?


与GCC的不和让Apple一直在寻找一个高效的、模块化的、协议更放松的开源的编译器替代品。最终,Apple相中了Chris Lattner的LLVM。


现在依然就职于Apple的Chris Lattner可是一位大神,他于2000年毕业于俄勒冈州波特兰大学计算机科学专业,同年前往UIUC(伊利诺伊大学厄巴纳香槟分校),攻读计算机科学硕士和博士学位。在UIUC期间,他的GPA是4.0(满分),并不断地研究探索关于编译器的未知领域,发表了多篇论文。在硕士毕业论文中,他提出了一套完整的在编译时、链接时、运行时甚至是在闲置时优化程序的编译思想,奠定了LLVM的基础。


LLVM在Chris Lattner念博士时更加的成熟。首先,LLVM使用GCC作为前端来对用户程序进行语义分析产生 IF(Intermidiate Format),然后,LLVM使用分析结果完成代码优化和生成。这项研究让Chris Lattner在2005年毕业的时候,成为了小有名气的编译器专家。他也因此早早地被Apple相中,成为其编译器项目的骨干。


进入Apple之后,Chris Lattner首先在OpenGL小组做代码优化,把LLVM运行时的编译架在OpenGL栈上,这样OpenGL栈能够产出更高效率的图形代码。这个强大的OpenGL实现被用在了后来发布的Mac OS X 10.5上。同时,LLVM 的链接优化被直接加入到Apple的代码链接器上。


一个好的工具,必须要有用武之地。几年之后,LLVM的机会就来了。Mac OS X 10.6 Snow Leopard的新功能,完全得益于LLVM的技术,而这一个版本,也是将LLVM推向真正成熟的重大机遇。


“一个篱笆三个桩,一个好汉三个帮”,LLVM能够实现很多华丽的功能,要归功于LLVM自身的新前端——Clang。
GCC系统庞大而笨重,因此,Apple决定从零开始写C、C++、Objective-C语言的前端Clang,以求完全替代掉GCC。


Clang于2007年开始开发,C编译器最早完成,在2009年的时候,Objective-C编译器已经完全可以用于生产环境,而在一年之后,Clang基本实现了对C++编译的支持。
Clang-LLVM.jpg
Clang一个重要的特性是编译快速、占内存少,而代码质量还比GCC来得高。得益于本身健壮的架构和Apple的大力支持,Clang越来越全能,支持的项目越来越多,如Mac OS X 10.6时代的Xcode和Interface Builder等,皆由Clang编译。Clang的加入也代表着LLVM真正走向成熟。


此外,Clang有一个重要的衍生项目是静态分析工具,能够通过自动分析程序的逻辑,在编译时就找出程序可能的bug,这个功能叫做ARC。ARC的实现让当时的广大开发者们大为惊愕。


除了LLVM核心和Clang以外,LLVM还包括一些重要的子项目,比如一个原生支持调试多线程程序的调试器LLDB和一个C++的标准库libstdc++。不光是Apple,很多的项目和编程语言都从LLVM中取得了关键性的技术。
————————————————
版权声明:本文为CSDN博主「周兆熊」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/52166942









当然,上面都是扯淡,其实这个模块就是把clang的全部api、常量和数据类型声明出来了,还有写上了中文注释,但是这个东西并不常用,只能用于专业从事C/C++相关开发的才有用,比如上面提到的静态分析,又或者我封装它的目的,根据头文件自动声明为易语言的API、常量、数据类型。当然这个功能我没有完成,只写了一半,因为离职的原因,代码在公司电脑上,忘记带走了,然后前段时间公司给把电脑重装了,代码也没了。所以我也就把模块发上来了。




注意!!我没有上传clang.dll,这个几十M大,自己安装个llvm,到安装目录下 D:\Program Files\LLVM\bin\libclang.dll (这个是我的路径)复制到源码下就可以玩了。


QQ截图20200313184927.png

QQ截图20200313184856.png




还是老老老老规矩,回复得源码!!看在我费心费力,劳心劳力,费尽心力,苦苦翻译好几天的份上,给个好评好不好??
libclang.e (124.18 KB, 下载次数: 66)

评分

参与人数 10好评 +10 精币 +24 收起 理由
quary888 + 1 + 2 YYDS~!
易语言资源网 + 1 + 5 支持开源~!感谢分享
airaz + 1 + 2 支持开源~!感谢分享
司徒西 + 1 + 2 支持开源~!感谢分享
fnp902003 + 1 + 2 一脸萌比,只会喊666了.
罗泠雨人 + 1 + 1 支持开源~!感谢分享
zlw310282 + 1 + 2 很好很强悍,坚持下去哦~
小白子 + 1 + 2 大神,请收下我的膝盖
流星暴雨 + 1 + 3 支持开源~!感谢分享
Bszk + 1 + 3 什么都看不懂,只会喊个666。。

查看全部评分


发表于 2022-4-13 11:16:16 | 显示全部楼层   山东省日照市
学习,感谢分享
回复 支持 反对

使用道具 举报

签到天数: 21 天

发表于 2022-2-28 11:19:38 | 显示全部楼层   新疆维吾尔自治区乌鲁木齐市
支持开源~!感谢分享。。。
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 19 天

发表于 2022-2-28 11:05:42 | 显示全部楼层   山东省枣庄市
ATS转LLVMIR要用LLVM的接口,clang包含吗,论坛没有封装好的,只有你这个clang的,最近复习编译原理,想用易语言做个编译器跑在llvm上,没有llvm只能放弃llvm框架。
回复 支持 反对

使用道具 举报

发表于 2021-12-13 22:24:23 | 显示全部楼层   广东省广州市
巨佬牛逼!
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 19 天

发表于 2021-12-5 13:41:50 | 显示全部楼层   山东省枣庄市
感谢大佬开源
回复 支持 反对

使用道具 举报

结帖率:92% (24/26)

签到天数: 11 天

发表于 2020-3-17 04:36:40 | 显示全部楼层   湖北省武汉市
虽然看不懂 但是还是支持下
回复 支持 反对

使用道具 举报

结帖率:100% (27/27)

签到天数: 5 天

发表于 2020-3-15 09:26:13 | 显示全部楼层   浙江省宁波市
llvm编译器框架下clang编译器<易语言SDK>
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2020-3-14 19:45:04 | 显示全部楼层   江苏省扬州市
还是老老老老规矩,回复得源码!!
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 4 天

发表于 2020-3-14 18:27:54 | 显示全部楼层   福建省漳州市
1111111111111111111
回复 支持 反对

使用道具 举报

结帖率:70% (7/10)

签到天数: 21 天

发表于 2020-3-14 18:20:05 | 显示全部楼层   甘肃省张掖市
很高端的东西,小白直接不懂,还是下载学习学习
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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