方舟编译器源代码疑似曝光,华为李小龙:来自服务器部门?

点击上方的终端研发部右上角选择设为星标

每日早9点半,技术文章准时送上

公众号后台回复学习”,获取作者独家秘制精品资料


640?wx_fmt=png

往期文章

平常,BAT的大佬们都在做些什么?

除了敲代码,你还有什么副业吗?

2019最新Android面试题

混合开发框架的对比,Flutter更胜一筹?

一位Android大牛的BAT面试心得与经验总结

640?wx_fmt=png

来源:tsuki

链接:https://www.zhihu.com/question/338350284

前几天,赶在华为开发者大会开幕前几天,华为已经在官方社区正式公布了方舟编译器的安装详情以及下载地址。官方介绍称,方舟编译器是基于GCC开发的交叉编译器套件,它包括了C、C++、Fortran的前端,也包括了这些语言的库(如libstdc++、libgcc等)。HCC运行在X86 linux架构服务器上,生成的二进制运行在Aarch64架构服务器上。 640?wx_fmt=jpeg引起争议后,华为手机产品线副总裁李小龙在微博上对“GCC套皮说”进行了辟谣,他表示:「这个网站不是华为消费者BG维护的网站,此编译器好像是服务器部门用的,和我们之前和P30一起发布的方舟编译器没有任何关系。」华为副总裁在微博说这是另一个 BG 的同名产品。那我们继续等待几天后真正的方舟编译器吧。

原答案:

下载页的开始称方舟编译器叫 HCC: 640?wx_fmt=jpeg我们从标注着 源码下载的链接这里,下载传说中的方舟编译器: 640?wx_fmt=jpeg下载下来的 tar 包却叫 gcc-ark: 640?wx_fmt=jpeg解压缩一看,没找到任何名称中含 ark/fangzhou/hcc/huawei 等单词的文件,却和我刚从 Arch Linux 仓库 拉下来的 gcc 交叉工具链蜜汁相似:
https://www.archlinux.org/packages/community/x86_64/aarch64-linux-gnu-gcc/
640?wx_fmt=jpeg这里我们先忽视从 源码下载链接里下载到了 二进制文件这个问题。继续运行,看起来也是个 gcc。此外贴心的 GPLv3 协议摘要,提醒着华为赶紧把它开源: 640?wx_fmt=jpeg尝试编译个 c 代码,目标架构的确是 elf64-littleaarch64: 640?wx_fmt=jpeg继续搜索一下编译器二进制文件里的字符串,找不到任何相关的独立单词: 640?wx_fmt=jpeg不过倒是可以看到一些调试信息: 640?wx_fmt=jpeg到此为止,最好的情况也只可能是华为在 gcc 上加了一些 patch,增加了一些优化 pass 等,重新打包并宣称这是其「自主研发」的新一代编译器。先不提这样的行为是否有分裂社区的嫌疑。看看其当时的宣传: 640?wx_fmt=jpeg 640?wx_fmt=png说好的 自主研发多语言联合优化的  Android 上的  Java 编译器呢?不过有人说华为开发者大会还没有召开,现在放出的这个还不是完全版。那我们就先等等,期待一下几天后放出的完全版。 希望我被打脸。毕竟我刚为华为贡献了一台 Matebook 14 的销量呢。

阅读更多

昨天,我又“装”上了Windows 1.0
热修复的几种方案,你可知否?
老板:请将你的代码进行Code Review!
一位Android大牛的BAT面试心得与经验总结
Android启动优化最佳方案:去启动页和异步初始化 Java泛型--BeanUtils.copyProperties引发的血案
相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

640?wx_fmt=jpeg

640?wx_fmt=gif

喜欢就给个“在看 640?wx_fmt=gif

这个编译器的源代码是我原先为了完成编译原理实验课作业而写的,所以只具有教学价值,现在发出来和大家共享 ;-)<br/><br/>和网上流传的版本不同,它从文法开始,一直做到了符号表的实现. 想实现自己的编译器的话,只需在把Initializtion.h中的文法修改为自己的即可.<br/><br/>工程结构:<br/>Initializtion.h 初始化文法,便于进一步进行分析,它为构造GRAMMAR类提供了信息.其中默认非终极符用<>括上,修改时需要注意.<br/>Grammar.cpp Grammar.h 定义了文法GRAMMAR类,它通过initializtion.h的信息建立文法的内部表示。<br/>LL1_Analyser.cpp LL1_Analyser.h 定义了LL1分析器,即LL1_Analyser类.<br/>LL1_Recognizer.cpp LL1_Recognizer.h 为LL1语法分析驱动器,可以通过文法,TOKEN序列和LL1分析表,判定语法是否正确,同时驱动动作.<br/>Rec_Parse.cpp Rec_Pares.h 实现了递归下降分析器Rec_Parse类, 递归下降的思想和LL1驱动器一样,不过是把压栈改成调用自己,而把弹栈改成返回.<br/>Scanner.cpp Scanner.h 实现了词法分析器,可以将程序变为TOKEN序列. 扫描的源程序文件路径也在这里被定义(默认为.//demo.txt)<br/>Action.cpp Action.h 实现了语义栈的操作,_Action类定义了动作符号所对应的动作.<br/>SymTable.cpp SymTable.h 实现了符号表的建立和输出.<br/><br/>希望大家能通过该程序对STL和编译原理有更深刻的理解,Have Fun and Good Luck!<br/><br/> -- David.Morre
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值