时不时听到周围作编译器相关工作的朋友、同学,对编译这个行业的未来持不乐观态度。诚然,芯片厂商可以通过优化芯片内的结构调整,很容易获得百分之十几以上的加速。而相比之下,编译器方面的静态优化,由于几十年的发展,能挖的性能很有限了,平均能有个10%左右的加速,发表一篇PLDI级别的文章,问题不大。有机会接触芯片细节,并据此开发编译器的,只有几个芯片设计公司;有机会接触到中端优化的,还有一些主推整套平台的一些公司。另外,就是些小的只做编译器的公司。不管是国内,还是国外,因为开源和芯片体系结构单一化,编译器开发职位正在慢慢减少。即使做了这方面的工作,往往也是非主流。不是销售,不是直接赚钱的研发。碰巧,那龙书又是以龙为封面,“屠龙之技”可谓恰到好处的一个词。 Continue reading »

 
注:看起来,像是在做新语言和编程工具来发,尤其是偏重函数式语言、数据流语言。貌似作SQL语言相关的优化。作者在邮件中划分了编译器的功能分布,如下粗体部分标注。后端负责指令调度和寄存器分配;中端负责访存布局、粗粒度并行;前端负责语言识别和转换。函数式语言、数据流语言在中端和前端的戏份比较大。

A premiere Proprietary Trading Firm in Chicago, IL is looking for a Compiler Developer to join their team.  After reading the job description, if you are interested in this great opportunity, email me your updated word resume to mdecker@lucasgroup.com and call me at 713-470-5790 to discuss this position further. Continue reading »

 

没错,是量子计算机。既然是计算机,就需要程序员,需要程序员就需要编译器。今天就来聊聊量子计算机的编译器,因为量子计算机还遥遥无期,所以就叫YY了。

这篇文章源自龙书第一作者,现在在哥伦比亚大学教书的Alfred V. Aho在 2008年PLDI上的一篇邀请讲座的PPT,能读懂英文的,请无视本文,原因嘛,我是中国人,你懂的,哈。 Continue reading »

 

LLVM之父,相信有很多人都知道,Chris Lattner。从2000年开始,搞LLVM到现在。LLVM最初的想法还是来自Chris Lattner的导师:Vikram Adve。编译界的大牛。

这篇文章来自CGO 2009的Keynote:《The Next Generation of Compilers》,keynote是学术会议上的精彩环节,一般是该领域的最权威学者做主题演讲,演讲的内容是很前瞻,高屋建瓴性质的。 Continue reading »

 

认识Native Client

Native Client (Nacl) 是Google提出的一种让浏览器直接运行机器码的技术,让Web应用可以从客户机上获得更多的性能,同时又不会引起安全问题。这个技术类似于微软的ActiveX。程序员可以使用C++或者其他语言编写web应用程序,再通过Nacl发布。程序中可以调用一些系统服务中安全的API,如声卡或者图形显示等。Nacl能使用的本地系统调用都是已经规定好的,所以安全性有保证。这篇文章介绍如何使用Native Client。 Continue reading »

 

因为之前的两篇博文前瞻-全时优化和LLVM-1前瞻-全时优化和LLVM-2都是基于Chris Lattner 2004年发表在CGO的文章写的。所以需要介绍一下LLVM从2004到2010这六年的变化,LLVM的开发社区很活跃。

从2004年三月到2010年4月,LLVM共发布了1.2-1.9,2.0-2.7,16个版本,至少每年发布两个版本。详细的历史发布版本和release都能从这里找到。

Continue reading »

 

上篇文章,以论文为主要依据,介绍了LLVM的概况和中间表示,本篇关注论文的后半部分内容–架构设计和LLVM的整体评测:

LLVM的架构设计:

总览

LLVM的架构设计以让传统的链接时,安装时,运行时和空闲时代码转换都能透明地在LLVM中间表示上展开为目的。上图就是LLVM的高层设计架构。包括静态的编译器前端用于生成LLVM中间表示;连接器用于做连接时优化,尤其是过程间优化。连接器的输出被JIT或者机器代码生成器生成机器代码。在机器代码生成时,可以通过插入低代价的抽样指令来测量运行时的profile,检测热代码,并将空闲时进行优化。

Continue reading »

 

读PLDI 04 Best Paper Award 《Automatically Proving the Correctness of Compiler Optimizations》
By Sorin Lerner.Todd Millstein and Craig Chambers in Washington U

本博自从接触编译器到现在,几乎都每天都能听到bug这个关键字,编译器中的bug很痛苦,首先,人写的程序很复杂,编译器设计者很难想出所有的情况并一并处理之;其次,编译器的bug很难调,要先排除程序本身的错,接着需要知道到底是分析时出错还是变换时出错;还有这些错都是在怎样的分析和变换中出了错;最后还要担心错误会不会越不越多,没有对编译器整体的理解,很难给编译器打上正确的补丁,从而有可能这个例子补对了,其他又错了一片.
作者在文章里就编译优化正确性的自动证明做了一些尝试,这些尝试在读完文章之后觉得很了不起,只是这里面提到的工作做下来,也是需要很大的积累和投入.作者的尝试我概括如下:将优化分为转换和具体优化两个部分.代码的转换是所有优化都要做的,而并非所有的转换都是优化,所以作者通过增加利益驱动模块来判断某个转换是否是优化,这样优化的自动证明问题,就变成了某个转换正确性的自动证明问题;正确性的定义:转换前后的语义保持不变.接着作者按照转换依据的信息来自转换语句之前还是之后,将转换分成两种模式,即前向转换模式和后向转换模式.然后分别对这两种模式进行讨论,而自动证明也分别针对这两种模式来论述. Continue reading »

 

搜索引擎索引情况

开博5天以来,使用关键词 “site:lingcc.net”,各个搜索引擎收录情况:

    google.cn 12条结果
    google.com 12条结果
    搜搜 1
    百度 0
    有道 0
    中搜 0
    搜狗 0

Continue reading »

 

受够了百度空间的不务正业,看腻了无数博客被墙的惨痛经历,在无比复杂的思想斗争和砸锅卖铁的决心之后,本博决定自己掏钱买空间。

花了97刀买了这个空间,还有个域名,尚不知如何绑定,暂时使用主机商提供的免费域名。以后可以通过网址:http://lingcc.com 找到我了。完全属于自己的空间,用着就是自在。

欢迎各位光临。

本博将关注以下内容:编译器架构设计,编译器后端优化,Open64,gcc编译器等的相关内容,另外还有我自己的Gentoo linux使用情况和生活琐事。欢迎光临。
Continue reading »

2009-2011© 编译点滴 Suffusion theme by Sayontan Sinha

无觅相关文章插件,快速提升流量