编译点滴 http://www.lingcc.com 编译器、虚拟机、程序设计语言、体系结构、软件调试、操作系统等等 Fri, 18 May 2012 02:54:39 +0000 en hourly 1 http://wordpress.org/?v=3.3.2 a list of compiler books — 汗牛充栋的编译器参考资料 http://www.lingcc.com/2012/05/16/12048/ http://www.lingcc.com/2012/05/16/12048/#comments Wed, 16 May 2012 01:30:08 +0000 erlv http://www.lingcc.com/?p=12048 Continue reading

相关文章:

]]>
前不久,有位《编译点滴》网友询问编译器方向的参考资料。其实之前讨论过一些编译器相关的在线资料–《有写编译器的冲动?这些资料很重要》。这篇博文就来总结总结编译技术相关的各类图书资料,供各位参考。这个书列是结合本人所了解的内容整理出来的,限于能力有限,肯定还有很多疏漏,请大家指正。

所列图书,有中文版本的,我会尽力给出中文版本名称。

1 编译器整体设计与实践

1.1 龙书 – 《Compilers Principles,Techniques, & Tool》

本书主页:http://dragonbook.stanford.edu/

这本书因为封面展示了程序员努力与各种计算机难题化身而成的恶魔龙的图片而闻名。
这是编译器领域最著名的一本教材,地位相当于《算法导论》与算法课的关系。
书中对编译相关理论、编译器实现技术等等都有介绍。虽然书很厚,但惜墨如金,言简意赅。
对于一些掌握的很朦胧的基本概念,翻看此书,仔细琢磨一会,便会茅塞顿开。

目前最新的是第二版。第一版重点在前端设计与实现上,有一小部分涉及代码生成、优化,以及运行时管理技术。
第二版新增了大量篇幅介绍编译器中的各种优化技术。将一些基本优化理论概括的很到位。
但因为刚刚加入,练习、实践方面还没有增加。

本书的作者是国际上编译界的几位鼻祖级人物:

这本书国内影印、翻译版本都有,书名《编译原理、技术与工具》。
相比不少人已经有了,这里就不多说了。

推荐度:××××× (五星,最高级)

1.2 虎书 – 《Modern Compiler Implementation in C》

本书主页:http://www.cs.princeton.edu/~appel/modern/c/

作者是来自 Princeton University的:

此书因封面为一只老虎而的名。除了C语言实现,作者还编写了编译器Java语言实现、ML语言实现两本。
这本书的特色是注重实践,许多章节在讲解理论的同时,会有个“program”一节,用来指导读者实现相关内容。
此外还有配套的一些分析和练习。

我曾利用此书练习编译器实现,中间有些关于嵌套函数的支持内容,因为实现过于复杂,曾经一度很纠结该不该做。
如果作者能结合现在语言的发展状况,重新组织一下图书,出个新版,就完美了。
(貌似作者在忙着出另一本书,《Alan Turing’s Systems of Logic: The Princeton Thesis》,听起来很有意思的书)

这本书国内影印和翻译版本也都有。书名《现代编译原理-C语言描述》

推荐度:×××× (四星,总体很好,部分内容稍旧)

1.3 《Engineering a Compiler》

本书主页: http://www.cs.rice.edu/~keith/Errata.html
使用本书教授的编译课程:http://www.clear.rice.edu/comp412/

这本书的两位作者都来自 Rice University。

值得赞一下的是:今年(2012年),这本书出了第二版。
这也是一本讲总体编译器实现的书。也没有仔细读过。
但每当需要翻开这本书的时候,我总是很激动,因为每次翻看都很激动想仔细读读。
但都因为一些琐事,未能如愿。这是一本除龙书外,值得非常用心读的一本书。
这本书12年的再版,更加强调一个现代编译器的设计与实现。
与龙书有很多前端的实践不同。这本书几乎涉及了编译器各个阶段,包括程序分析和优化阶段的实现。
另外,从目录结构来看,对编译技术的讲解也很透彻。(因为本人没有详细阅读此书,所以只能表面看看)。

这本书国内有第一版的翻译版本,名称《编译器工程》。有兴趣的朋友可以看看。

推荐度:××××× (五星,最高级)

1.4 《编译原理实验教程》

这是我认为很值得推荐的一本国内编译器实现教材。
书不厚,但内容很完整。作者是中国科学技术大学的张昱和陈意云老师。
本书主页:http://staff.ustc.edu.cn/~yuzhang/compiler/

陈老师是国内编译方面的前辈之一。多年从事中国科技大学的编译原理课程教学工作。
这本书就是在中国科大计算机学院多年编译实验课程的基础上总结而来的。
我曾和其中一位参与本书中库代码、文本编写的研究生同住半年。
他很自豪的说,这本书是本好书。

这本书主要基于Java实现一个面向对象的类Java语言的编译器。
光盘中还有相应的类库和程序设计开发包。
手痒的朋友可以买来立即动手试试。

推荐度:×××× (四星,实践细节较多,理论少)

1.5 《Crafting a compiler》

本书主页:http://www.cs.wustl.edu/~cytron/cacweb/

这也是一本偏向于介绍编译器前端实践的教材。
这本书和《编译原理实验教程》类似,也有相关的源代码提供,都是Java的。感兴趣的朋友可以从主页上下。
这本书我草草翻过。书中的内容没有仔细看,不过感觉习题比较有意思。

这本书国内有原版影印版,书名《编译器构造》。

推荐度:×××× (四星,没有自己的特点,这本书覆盖到的别的书也有讲。内容不旧但也不新)

2 语言理论、编译器前端设计与实现

因为程序设计语言一直在向前发展,所以关于程序语言和编译器前端设计的书,也在不断发展着,而且曾出不穷。

2.1 《Introduction to Automata Theory, Languages, and Computation》

本书主页: http://infolab.stanford.edu/~ullman/ialc.html

这本书介绍了计算机的理论基础–自动机理论。
以及以此为基础的乔姆斯基文法概念,计算复杂性问题。 这些都是计算机科学的理论基石。
乔姆斯基文法更是程序语言设计的基础。
虽然看标题,这本书的理论应该挺老了。不过这本书当前的最新版本–第3版是2006年发行的。
对于基础理论性的书籍,这已经算是比较新的了。

说实话,虽然一直计划要看,但到现在这本书还没有翻开过。所以不好随便评论。
感兴趣的朋友可以看看豆瓣上的评论

这本书国内有影印版和翻译版,书名《自动机理论、语言和计算导论》。

推荐度:××××× (对语言设计理论,计算机科学、可计算性问题感兴趣的读者,千万不能错过)

2.2 《Programming Language Pragmatics》

本书主页在此:http://www.cs.rochester.edu/~scott/pragmatics/

这本书可以用集编程语言设计之大成来形容,目前最新版本为第三版,作者是University of Rochester的Michael L. Scott教授。
此书介绍了被广泛使用的各种编程语言,以及这些编程语言中一些语言特性的编译器实现细节。
另外,还讨论了很多在程序设计语言演进的过程中曾经昙花一现的一些技术及其优劣。
因为涉及到十几种编程语言的很多细节,书中有些内容(比如脚本语言一章)给人一种简单罗列、缺少分析的感觉。
但可以明显感觉得到,对于那些重要的语言特性,比如控制抽象、类型系统、面向对象、函数式语言等等,作者都分析的很到位。
而且这些分析都是基于一个个程序片段,而非简单的理论分析。

每一章后面的习题,也很值得推荐,比如不少习题会引导你去看语言对应的编译器/解释器中具体的实现原理,以及一些特性的比较之类。
上过编译原理课程,并了解至少两门语言的读者,强烈推荐阅读之。

目前最新版本是第三版。国内有第二版的翻译和影印版,书名《程序设计语言–实践之路》。

推荐度:××××× (5星,最高级)

2.3 《Practical Foundations for Programming Languages》

首先,感谢Carnegie Mellon University的Robert Harper,我们能免费的拿到这本书的电子版

此书主要介绍程序设计语言的基础,几乎涵盖了程序语言的方方面面,小到符号、异常,大到整个类型系统的设计、并行、并发语义的设计与实现。
作者既然把这本书电子版直接放出来,至少说明他很自信这是一本好书,也很希望与更多喜欢该技术的人交流。
我们也有充分的理由相信,这书值得一读。

目前此书只有英文版本。

推荐度:×××× (4星,理论性较强,有些枯燥。但绝对是本权威著作)

2.4 《 Design Concepts in Programming Language 》

本书主页: https://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=11656
MIT出版社出版,作者是:

  • Franklyn A. Turbak
  • David K. Gifford

这也是一本介绍程序语言设计的书,但和《Programming Language Pragmatics》集大成不同,它强调对一些语言设计中公共技术的研究和论述。
目前的最新版本已经是第10版了。
这本书我只草草的翻过,最深刻的印象是厚!相当于两本龙书那么厚。
印象第二深刻的是,把语言设计的一些方面分成了三个部分,动态语义(命名、状态、控制)、静态语义(类型、多态、模块)和实践需求(垃圾收集)。
具体的内容没有细看,感兴趣的朋友可以到该书的主页内看看。

这本书有中文影印版,书名《程序设计语言概念》。

推荐度:××××(4星,太厚了,可以先找个薄点的看看)

2.5 《 Principles of Program Analysis》

本书主页: http://www2.imm.dtu.dk/~riis/PPA/ppa.html

这是经 Cheng推荐而添加的。顾名思义,这本书主要讲程序分析的相关基础理论和概念,重点集中在静态分析技术,包括分析程序可靠性、动态行为。书中介绍的程序分析技术,涵盖:数据流分析、基于约束的分析、抽象解释、类型系统四个方面。

目前此书最新版本是第二版,没有国内版本。

推荐度:XXXXX (五星,最高级,内容结合最新理论、基础概念、概括全面)

2.6 《Language Implementation Patterns – Create Your Own Domain-Specific and General Programming Languages》

这本书可以简单的看作ANTLR工具的使用手册。即介绍如何利用ANTLR工具,创建自己的Domain Specific language编译器。
ANTLR与Flex/Bison的功能差不多,只不过一个是基于Java的,一个基于C/C++。

这本书有中文版,书名《编程语言实现模式》。

推荐度:×××× (4星,专业性稍微有点强,想自己实现编译器的朋友可以试试)

2.7 《flex & Bison》

看到这本书的名称,想必不少朋友都知道是用来干什么的了。
这是一本介绍如何使用编译器生成工具flex和bison实现一个前端的书。
此书更加偏重实际动手能力和工具。
目前这本书最新版本是第二版。而且已经有中文版本。

书中的内容主要涉及如何使用flex和bison,以及如何解决语法冲突、二意性问题,还有一章单独介绍了编译器前端的错误报告和恢复。

这本书国内也有翻译版和影印版。

推荐度:×××× (4星,越看越像个工具使用说明)

3 程序分析、编译优化及代码生成技术、编译器中端和后端设计与实现

3.1 《Optimizing Compilers for Modern Architectures: A Dependence-based Approach 》

这本书是编译界泰斗级老前辈–Ken Kennedy 的著作。
主要从编译器、代码分析角度介绍如何进行依赖分析以适应现代的超标量、并行体系结构。
很可惜,这本书01年出版之后没有再版过。
如果Kennedy还在世,看着多核、众核这么蓬勃的发展,一定会出新版讨论讨论粗粒度的线程级并行和依赖分析问题,
把他以及他的弟子们对编译的理解统统贡献给世人。

不管怎样,这本书在面向VLIW、超标量体系结构的编译优化,为并行而进行的依赖分析方面,绝对是一本难得的好书。
这本书有中文翻译版《现代体系结构的优化编译器》,由计算所编译组敬爱的张兆庆老师领导翻译,但翻译版貌似在各大网上书店都已经没货了。

推荐度:××××× (5颗星,最高级,即使随便翻翻大师们的作品,也能收获不少)

3.2 鲸书 – 《Advanced Compiler Design and Implementation》

这本书可以用程序分析、编译器实现、性能优化技术的百科全书来形容。
基本网罗了面向当今主流微处理器结构的所有程序分析、编译优化技术。
而且都对这些技术做了概括、总结,附有丰富的参考文献。

不过也因为这个百科全书需要非常宽的知识面、非常深的编译功底、非常大的阅读量。
而且一个人的力量也很有限。所以有不少批评的声音,说书中的算法有不少bug。
不管怎么说,没有第二个人能写出这种书,这就值得我们尊敬。

国内有此书的影印版和翻译版,书名《高级编译器设计与实现》。

推荐度:××××× (5星,最高级)

3.3 《Building an Optimizing Compiler》

也是一本较老的书,98年出版的。
作者在编译器的实践方面经验丰富,主要关注如何选择编译技术,技术的工程实现以及如何对技术进行改进。
实际设计和实现编译器时,作者秉承经典技术优先于最新技术的原则。所以书中的介绍也充满了对经典编译优化技术的透彻理解。

推荐度:××× (3星,内容较旧,所讲内容其他书也都有覆盖,不过基于扎实的工程经验是本书可圈可点的地方)

3.4 《Data Flow Analysis– Theory and Practice》

本书主页:http://www.cse.iitb.ac.in/~uday/dfaBook-web/

顾名思义,这本书主要介绍编译器内部的一个基本程序分析技术–数据流分析。
该书的作者是三名印度人。其中Uday Khedker领导实现了GCC 4.0版本中的数据流分析优化的整体框架。

这本书将数据流分析理论讲解的非常到位,从latice到iterative algorithm,再以多个实际数据流编译优化为例,介绍了前向、后向、双向的数据流分析算法。
包括复杂度分析、可计算性问题。最后,又结合GCC中的实现介绍,数据流分析的结构体设计、函数设计等等。
看了这本书,只能用过瘾来形容。
目前这本书还没有中文版本。

推荐度:×××× (4星,虽然写的很好,但专业性太强,不推荐没有编译基础的朋友阅读)

4 运行时技术、虚拟机和解释器设计与实现

其实许多讲Java虚拟机的书,都可以算在这个类别里面。因为个人能力有限,那些书就不列在这里了。
这里只列一本专门讲编译器和解释器实现的书

4.1 《Writing Compilers and Interpreters: A Software Engineering Approach》

目前已经是第三版了。这本书倾向于利用现有工具完成一个编译器,其中用到了Java、UML、XML、Java容器、实现一个IDE等等。
都是比较有意思的小项目。

这本书我没有翻过,只是从书的目录和介绍中推测的。

推荐度:××××× (5星,最高级,写了很多其他书没有写的东西,且能做成一个很有成就感的东西。)

5 其他书籍

因为能力和水平有限,上面列的书都是我平时所能接触到的。
其实很有许多其他书,因为没有看过,所以无法评价。下面给出一些其他人列出的书单,供朋友们参考:

相关文章:

]]>
http://www.lingcc.com/2012/05/16/12048/feed/ 3
聊聊数据中心的能耗 http://www.lingcc.com/2012/05/09/12035/ http://www.lingcc.com/2012/05/09/12035/#comments Wed, 09 May 2012 01:04:37 +0000 erlv http://www.lingcc.com/?p=12035 Continue reading

相关文章:

]]>
这年头,不扯点数据中心、云计算、大数据,就觉得自己不是搞IT的。
碰巧今天听了来自IBM Research Austin的John Carter所做的报告–Building better server and network.
所以就借着消化这个报告的机会,写下所见所闻。文中的数据大部分来自《量化》第5版,部分来自于John Carter的报告。

感兴趣的朋友可以从这里找到John Carter近期发表的论文(http://www.informatik.uni-trier.de/~ley/db/indices/a-tree/c/Carter:John_B=.html )。
这里面包含了他报告的几乎所有内容。

1 数据中心能耗分布

咱们先从整个数据中心的能耗开始。
先来看看电力传输的能耗,从发电厂,一直到各种服务器、空调上的电源线。这其中,变电站的能效是99.7%, UPS(不间断电源)的能效94%,
数据中心内部的PDU(Power Distribution Unit,电源分配器)的能效98%,进入机房后还需要一级电压转换(能效98%),
还有各种开关、各种连接装置等等能效大概是99%.

也就是说,实际从电厂到服务器,整个环节能效: 99.7%x94%x98%x98%x99%=89% .
11%的电力消耗在传输上。

数据中心的内部的能耗分布中:各种IT设备的能耗占55%,空调等冷却设备占45%.
发热的确是个大问题。

2 服务器内的能耗分布

服务器内部包括处理器、内存、硬盘、网络,所占的能耗比例分别是33%、30%、10%、5%。剩下的22%是其他一些设备的能耗(《量化》5版数据).
来自IBM的数据凸显了Power处理器的高能耗。在Power 7服务器中处理器的能耗比例是41%,内存46%(内存也不低), 其他13%.
可以看到处理器和内存是耗能大户。也是这两者发热最厉害,需要能耗非常高的冷却设备。

3 降低能耗怎么降?

先来看看普通数据中心应用的特点。如下图,是《编译点滴》使用的Xen虚拟机最近24小时内CPU使用情况。这属于负载很高的一天。平时的负载都比这个少50%左右。
可以看到尖峰很多,也就是说偶尔需要很高性能,大部分时间都是空闲的。
虽然《编译点滴》是个小站,不过应该能够代表一小撮VPS用户的典型特征。

 

来自IBM的数据也显示,一般情况下平均95%的CPU内部功能部件都是空闲的。
比如Power 7处理器中每个核中2个定点运算单元、2个访存部件、4个双精度浮点运算部件、1个向量运算部件、1个十进制浮点运算部件、1个分支预测部件还有若干cache,基本上某一时刻只有一两个功能部件在工作。另一方面,所有的存储器操作基本都是处理器发起的。所以擒贼先擒王,降低能耗就从处理器开始。

以Power 7处理器为例,该处理器有8个核,每个核中都有5个温度传感器、芯片其他部分还有4个,总共44个温度传感器。这些传感器会将数据传送到片外的一个单独的能耗/温度检测和管理芯片上。该芯片可以根据CPU内的温度、负载情况调节CPU中每个core的频率,进而起到控制能耗的作用。精确控制芯片频率的功能是通过测量每个核中的关键路径实现,结合温度情况实现的。每个核中的5个传感器通过检测不同种类的功能部件中的指令队列,实现对关键路径的测量。能耗控制芯片对Power处理器的检测、控制可以精确到10几个cycle的量级。通过这套机制在不损耗性能的情况下,能降低20%左右的功耗。效果挺不错的。

访存方面的节能通过关闭不经常访问的存储区间来实现。这个John Carter没细讲,所以也不太明白。

3.1 数据中心能耗怎么量化

数据中心的能耗可以使用PUE(Power Usage Effectiveness)量化。

PUE=(Total Facility Power)/(IT Equipment Power)

一般数据中心的PUE都在1.69~2.0左右。当前,最绿色的数据中心,恐怕还是来自Google的,PUE达到1.19.

相关文章:

]]>
http://www.lingcc.com/2012/05/09/12035/feed/ 2
计算机体系结构国家重点实验室编译组招聘编译器开发、应用调优工程师 http://www.lingcc.com/2012/04/19/12029/ http://www.lingcc.com/2012/04/19/12029/#comments Thu, 19 Apr 2012 00:40:02 +0000 erlv http://www.lingcc.com/?p=12029 Continue reading

相关文章:

]]>
本招聘长期有效,同时招实习生。

中科院计算所是联想、曙光与神州龙芯等公司的诞生地。计算机体系结构国家重点实验室编译组面向高性能、高通量、Web等核心应用,针对国产CPU、多核、众核、异构体系结构提供编程模型、语言和相关工具链、运行时支持。团队成员来自Sun、IBM等公司,牵头承担国家核高基、863、企业联合项目,与龙芯、华为、HP、清华、中科院软件所等单位有密切合作。

招聘岗位: 编译器开发、应用调优工程师

招聘部门: 计算机体系结构国家重点实验室编译组

工作地点:北京海淀区科学院南路6号,北四环融科资讯中心
岗位职责: 从事面向热点高通量、Web服务、高性能计算的编程语言、编译器、函数库开发和调优
具体工作职责:
1. 针对工业界主流应用,面向体系结构发展方向,设计开发工具链相关支持
2. 针对主流应用寻找性能瓶颈,结合国内外学术产业界的研究现状,在语言、工具链角度寻求并实现解决方案。
3. 面向多核、众核、异构体系结构,结合研究现状,在语言、工具链角度寻求并实现解决方案。

我们能给你的:
1. 有竞争力的薪酬、轻松宜人的工作环境、灵活上下班时间。
2. 朝气蓬勃、自由民主的团队。经常性Boss买单的组内聚餐,每篇顶尖论文长达两三个小时的激烈讨论……
3. 面向当前最前沿的应用领域、体系结构研究机会。接触目前最前沿主流的工业界需求,并展开研究。计算所编译组十几年的科学研究、项目开发经验都统统和你分享。
4. 广阔的个人发展空间。硕士学历工程师,工作满三年后可申请在职博士,有前往普林斯顿等美国大学交流机会。博士学历者,助理研究员、副研究员、研究员……
5. 鼓励尝试、富有耐心的文化氛围。有自己的想法?喜欢折腾?我们努力给你提供了最广阔的舞台。长达一年的师傅负责制,由大拿负责协助尽快进入状态!

需要你满足:
1. 计算机相关专业本科及以上学历
2. 熟悉C/C++编程
3. 通过英语四级,能阅读英文文档
4. 喜欢开源软件,了解Linux基本操作。
5. 喜欢系统软件,了解体系结构、编译器、程序语言、操作系统对IT产业的重要性
6. 极客范儿,为满足自己的需要,喜欢尝试各种技术。
7. 同时接受校招与社招
8. 应聘之前逐一搜索过工作描述中的关键字。看过如下三个网页:
8.1 http://view.eecs.berkeley.edu/wiki/Main_Page
8.2 http://research.microsoft.com/en-us/um/cambridge/events/asplos_2012/index.html
8.3 http://pldi12.cs.purdue.edu/content/list-accepted-papers-%E8%AE%BA%E6%96%87%E6%94%B6%E5%BD%95

简历投递:lianruiqi@ict.ac.cn
我们将择优通知,安排一次交流会。
因为时间有限,恕不能一一回复。

=============================

编译点滴推荐:

计算所编译组就是《编译点滴》博主所在的课题组。值得花上整整10篇博文大力推荐此职位。此次招聘,是为了应对组内项目多、人员少的现状。项目都是很有挑战性的,否则国家部位不会批、公司也不会找你做。因为还准备请应聘的朋友到计算所实地面对面做交流,所以大部分推荐的理由到时候再说吧。不了解编译器没关系,只要有对技术的喜欢和钻研劲,就行。本博主也是乱闯进“编译界”的。

如果投简历时,注明从《编译点滴》看到的,那可是大大的加分项。

相关文章:

]]>
http://www.lingcc.com/2012/04/19/12029/feed/ 4
GCC 4.7发布兼GCC 25岁生日 http://www.lingcc.com/2012/03/23/12010/ http://www.lingcc.com/2012/03/23/12010/#comments Fri, 23 Mar 2012 00:30:19 +0000 erlv http://www.lingcc.com/?p=12010 Continue reading

相关文章:

]]>
昨天,Richard Guenther宣布GCC发布最新的4.7版本。
同时GCC也迎来了它的25岁生日1

1 4.7的新特性

我们先来看看GCC 4.7的亮点:

1.1 通用编译优化的改进

  • 链接时优化在可扩展性、稳定性和资源占用上都有改进
  • 改进对函数内联的支持
  • 改进对过程间常数传播的支持
  • 增加对字符串长度相关的几个string库函数的编译优化

1.2 新语言及语言新特性的改进

  • 对几种特定CPU的软件事务型内存支持
  • 增强对ISO C++11标准的支持
    • 原子操作支持
    • C++11 存储模型支持
    • 非静态数据成员构造函数支持
  • 更多对ISO C11标准的特性支持
  • C/C++/Fortran的 OpenMP 3.0 支持
  • 增强对Go 1 语言标准的支持(目前支持尚不完善,4.7.1将提供完整的支持。)

1.3 新CPU及CPU新特性的改进

  • 增加对 Adapteva的 Epiphany 处理器的支持
  • 增加对 National Semiconductor的CR16处理器,TI的 C6X处理器的支持
  • 增加对Tilera公司的 TILE-Gx2
    和 TILEPro3 系列众核处理器的支持
  • X86方面,扩展了对Intel Haswell和AMD Piledriver体系结构的支持
  • ARM方面,增加了对Cortex-A7系列处理器的支持

2 25岁的GCC

GCC,即 GNU Compiler Collection,是GNU开发的一套针对多种编程语言,面向多种处理器指令集的编译器。
自1987年3月22日,Richard Stallman在MIT发布1.0版本至今,已经25年。
经过25年的发展,GCC目前已经是GNU/Linux系统的“亲妈”,所有GNU/Linux系统都是采用GCC编译、生成可执行的内核、可执行文件和库。
不仅仅GNU/Linux,在BSD系统、Mac OS X系统也是标准编译器(虽然这俩有向LLVM转移的趋势4
目前GCC支持C,C++、Objective-C、Fortran、Java、Ada、Go等语言,以及OpenMP、UPC等语言扩展。
支持Alpha、MIPS、ARM、SPARC、X86-64、IA-32、IA-64、PowerPC等指令级。
虽然已经走过了25年,GCC依然保持活跃的开发社区。最近又计划大刀阔斧搞改革,在GCC 5.0中吸取LLVM模块化的成功经验5

相关文章:

]]>
http://www.lingcc.com/2012/03/23/12010/feed/ 4
中科院软件所招实习生做C/C++静态代码分析工具(基于Clang) http://www.lingcc.com/2012/03/01/12002/ http://www.lingcc.com/2012/03/01/12002/#comments Thu, 01 Mar 2012 06:51:11 +0000 erlv http://www.lingcc.com/?p=12002 Continue reading

相关文章:

]]>
Xu zhongxing 现在在中科院软件所工作,在做一个针对C和C++语言的静态分析工具,目标是自动检测代码中的错误。之前他参与了LLVM/Clang项目,是Clang static analyzer(http://clang-analyzer.llvm.org/)的主要作者之一。现在做的仍然基于Clang前端,但分析部分全部重做了。现在想找一个实习生来一起做。希望你:

有很好的C++基础
懂编译原理
最好熟悉C,C++标准
有兴趣
能够实习一年以上,因为时间短了基本上干不了啥。

薪酬大约2000-3000每月。

项目的难度还是挺大的,但能学到很多东西,并且有很好的市场前景。
简历请发到 xu_zhong_xing at 163.com

 

邮件请说明,信息来自《编译点滴》

——————-
编译点滴推荐:
Xu Zhong Xing可能是国内最活跃的Clang贡献者了。
之前和他交流过一两次,踏实,低调认真做事。
Clang在程序分析上非常有前途。
绝对值得参与。

 

相关文章:

]]>
http://www.lingcc.com/2012/03/01/12002/feed/ 2
2011年计算所编译组硕士、博士毕业生工作签约情况 http://www.lingcc.com/2012/02/09/11945/ http://www.lingcc.com/2012/02/09/11945/#comments Thu, 09 Feb 2012 07:37:01 +0000 erlv http://www.lingcc.com/?p=11945 您可能也喜欢: 中科院计算所岗位招聘(编译方向) 《多核编译技术研讨会》记一 计算机体系结构国家重点实验室编译组招聘编译器开发、应用调优工程师 MNC need compiler expert 存储层次结构、cache、编译 无觅

相关文章:

]]>
新年回来,了解到组内找工作的情况,在此总结一下,最后一次反驳先前《屠龙之技》的论调。

2011年,计算所系统结构实验室编译组共毕业7位硕士,4位博士

7位硕士,都已签约:人民搜索(北京)、百度(北京)、EMC(北京)、Marvell(上海)、华为(杭州)、建行总行(深圳)、阿里云(北京)。基本每人累计都有3个以上不错的offer,不少于4个offer的package在19w+。师弟师妹们也都很地道,确定不去的,都早早告知了对方。

4位博士情况:MSRA、IBM CRL、留所、出国博后。博士师兄师姐们,所有的出路都是自己的第一选择,都很满意。博士的offer也同样给力,基本都体现了应有的价值。因为这些offer不能简单用薪水衡量,这里就不再对比了。

明年,编译组大概也有7位硕士毕业,3名左右博士毕业。期待他们的好结果。

 

 

相关文章:

]]>
http://www.lingcc.com/2012/02/09/11945/feed/ 2
PLDI 2012 List of Accepted Papers http://www.lingcc.com/2012/02/04/11985/ http://www.lingcc.com/2012/02/04/11985/#comments Sat, 04 Feb 2012 00:11:48 +0000 erlv http://www.lingcc.com/?p=11985 Continue reading

相关文章:

]]>
List of Accepted Papers 论文收录

* The acceptance of a few additional papers is still pending

Compiling a High-Level Language for GPUs (via Language Support for Architectures and Compilers)
Christophe Dubach12, Perry Cheng1, Rodric Rabbah1, David F. Bacon1, Stephen Fink1
1IBM, 2University of Edinburgh

 

Synchronising C/C++ and POWER
Susmit Sarkar1, Mark Batty1, Scott Owens1, Kayvan Memarian1, Peter Sewell1, Luc Maranget2, Jade Alglave3, Derek Williams4
1University of Cambridge, 2INRIA, 3University of Oxford, 4IBM

 

Static Analysis and Compiler Implementation of Idempotent Processing
Marc Kruijf, Karthikeyan Sankaralingam, Somesh Jha
University of Wisconsin – Madison

 

Adaptive Input-aware Compilation for Graphics Engines
Mehrzad Samadi1, Amir Hormati2, Mojtaba Mehrara1, Scott Mahlke1
1University of Michigan, 2Microsoft Corporation

 

Automated Error Diagnosis Using Abductive Inference
Isil Dillig1, Thomas Dillig1, Alex Aiken2
1College of William & Mary, 2Stanford University

 

Multicore Acceleration of Priority-Based Schedulers for Concurrency Bug Detection
Santosh Nagarakatte1, Sebastian Burckhardt2, Milo M K Martin1, Madanlal Musuvathi2
1University of Pennsylvania, 2Microsoft Research

 

RockSalt: Better, Faster, Stronger SFI for the x86
Greg Morrisett1, Gang Tan2, Joseph Tassarotti1, Jean-Baptiste Tristan1, Edward Gan1
1Harvard University, 2Lehigh University

 

Fast and Precise Hybrid Type Inference for JavaScript
Brian Hackett1, Shu-yu Guo2
1Mozilla Corporation, 2University of California, Los Angeles

 

Fully Automatic and Precise Detection of Thread Safety Violations
Michael Pradel, Thomas Gross
ETH Zurich

 

The Implicit Calculus: A New Foundation for Generic Programming
Bruno Oliveira1, Tom Schrijvers2, Wontae Choi1, Wonchan Lee1, Kwangkeun Yi1
1Seoul National University, 2Universiteit Gent

 

Sound and Precise Analysis of Multithreaded Programs through Schedule Specialization
Jingyue Wu, Yang Tang, Gang Hu, Heming Cui, Junfeng Yang
Columbia University

 

Effective Parallelization of Loops in the Presence of I/O Operations
Min Feng, Rajiv Gupta, Iulian Neamtiu
University of California, Riverside

 

Input-Sensitive Profiling
Emilio Coppa, Camil Demetrescu, Irene Finocchi
Sapienza University of Rome

 

Type-Directed Completion of Partial Expressions
Daniel Perelman1, Sumit Gulwani2, Tom Ball2, Dan Grossman1
1University of Washington, 2Microsoft Research Redmond

 

Synthesising graphics card programs from DSLs
Luke Cartey, Rune Lyngsø, Oege Moor
University of Oxford

 

Reasoning about Relaxed Programs
Michael Carbin, Deokhwan Kim, Sasa Misailovic, Martin C. Rinard
MIT Computer Science and Artificial Intelligence Laboratory

 

Parallelizing Top-Down Interprocedural Analyses
Aws Albarghouthi1, Rahul Kumar2, Aditya Nori3, Sriram Rajamani3
1University of Toronto, 2Microsoft Corporation, 3Microsoft Research India

 

Concurrent Data Representation Synthesis
Peter Hawkins1, Alex Aiken1, Kathleen Fisher2, Martin Rinard3, Mooly Sagiv4
1Stanford University, 2Tufts University, 3MIT Computer Science and Artificial Intelligence Laboratory, 4Tel-Aviv University

 

Diderot: A Parallel DSL for Image Analysis and Visualization
Charisee Chiw, Gordon Kindlmann, John Reppy, Lamont Samuels, Nick Seltzer
University of Chicago

 

A Dynamic Program Analysis to find Floating-Point Accuracy Problems
Florian Benz1, Sebastian Hack1, Andreas Hildebrandt2
1Saarland University, 2Johannes-Gutenberg UniversitÄt Mainz

 

Self-Stabilizing Java
Yong hun Eom, Brian Demsky
University of California, Irvine

 

Race Detection for Web Applications
Boris Petrov1, Martin Vechev2, Manu Sridharan3, Julian Dolby3
1Sofia University, 2ETH Zurich, 3IBM T.J. Watson Research Center

 

Engage: A Deployment Management System
Jeffrey Fischer1, Rupak Majumdar2, Shahram Esmaeilsabzali2
1Genforma Corp., 2MPI-SWS

 

Understanding and Detecting Real-World Performance Bugs
Guoliang Jin1, Linhai Song1, Xiaoming Shi1, Joel Scherpelz2, Shan Lu1
1University of Wisconsin, Madison, 2Nvidia

 

And Then There Were None: A Stall-Free Real-Time Garbage Collector for Reconfigurable Hardware
David F. Bacon, Perry Cheng, Sunil Shukla
IBM Research

 

Polyhedra Scanning Revisited
Chun Chen
University of Utah

 

Dynamic Trace-Based Analysis of Vectorization Potential of Applications
Justin Holewinski, Ragavendar Ramamurthi, Naznin Fauzia, Mahesh Ravishankar, Louis-Noel Pouchet, Atanas Rountev, P. Sadayappan
Ohio State University

 

Automated Synthesis of Symbolic Instruction Encodings from I/O Samples
Patrice Godefroid1, Ankur Taly2
1Microsoft Research, 2Stanford University

 

Parcae: A System for Flexible Parallel Execution
Arun Raman1, Ayal Zaks2, Jae W. Lee 3, David I. August1
1Princeton University, 2IBM Research, 3Sungkyunkwan University

 

Dynamic Synthesis for Relaxed Memory Models
Feng Liu1, Nayden Nedev1, Nedyalko Prisadnikov2, Martin Vechev3, Eran Yahav4
1Princeton University, 2Sofia University, 3ETH Zurich, 4Technion

 

Language-Based Control and Mitigation of Timing Channels
Danfeng Zhang, Aslan Askarov, Andrew Myers
Cornell University

 

A Compiler Framework for Extracting Superword Level Parallelism
Jun Liu, Yuanrui Zhang, Ohyoung Jang, Wei Ding, Mahmut Kandemir
The Pennsylvania State University

 

Algorithmic Profiling
Dmitrijs Zaparanuks, Matthias Hauswirth
University of Lugano

 

Reagents: Expressing and Composing Fine-grained Concurrency
Aaron Turon
Northeastern University

 

Janus: Exploiting Parallelism via Hindsight
Omer Tripp1, Roman Manevich2, John Field3, Mooly Sagiv1
1Tel Aviv University, 2The University of Texas at Austin, 3Google

 

Deterministic Parallelism via Liquid Effects
Ming Kawaguchi, Patrick Rondon, Alexander Bakst, Ranjit Jhala
UC San Diego

 

Chimera: Hybrid Program Analysis for Determinism
Dongyoon Lee, Peter Chen, Jason Flinn, Satish Narayanasamy
University of Michigan, Ann Arbor

 

Scalable and Precise Dynamic Datarace Detection for Structured Parallelism
Raghavan Raman1, Jisheng Zhao1, Vivek Sarkar1, Martin Vechev2, Eran Yahav3
1Rice University, 2ETH Zurich, 3Technion

 

Synthesizing Software Verifiers from Proof Rules
Sergey Grebenshchikov1, Nuno Lopes2, Corneliu Popeea1, Andrey Rybalchenko1
1Technical University Munich, 2INESC-ID / IST – TU Lisbon

 

Speculative Separation for Privatization and Reductions
Nick P. Johnson1, Hanjun Kim1, Prakash Prabhu1, Ayal Zaks 2, David I. August1
1Princeton University, 2IBM Haifa Research Lab

 

SuperC: Parsing All of C by Taming the Preprocessor
Paul Gazzillo, Robert Grimm
New York University

 

Type-Directed Automatic Incrementalization
Yan Chen, Joshua Dunfield, Umut A. Acar
Max Planck Institute for Software Systems

 

Efficient State Merging in Symbolic Execution
Volodymyr Kuznetsov, Johannes Kinder, Stefan Bucur, George Candea
EPFL

 

Design and Implementation of Sparse Global Analyses for C-like Languages
Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, Kwangkeun Yi
Seoul National University

相关文章:

]]>
http://www.lingcc.com/2012/02/04/11985/feed/ 0
中科院计算所岗位招聘(编译方向) http://www.lingcc.com/2012/02/01/11973/ http://www.lingcc.com/2012/02/01/11973/#comments Wed, 01 Feb 2012 10:13:11 +0000 erlv http://www.lingcc.com/?p=11973 Continue reading

相关文章:

]]>
工作地点:北京海淀区科学院南路6号,中国科学院计算技术研究所
单位网站:www.ict.ac.cn
部门:计算机系统结构重点实验室

岗位职责: 从事C/C++/Fortran优化编译器的开发与调试
具体包括:
1. 编译优化的设计和开发
2. 面向异构多核的编译系统的设计和开发

岗位要求:
1. 计算机相关专业本科以上学历,对计算机系统结构有深入理解者优先。
2. 熟悉C/C++编程,熟悉Linux操作系统者优先。
3. 熟悉GCC/Open64/LLVM编译器者优先, 有编译相关工作经验者优先。
4. 熟悉一种或多种脚本语言优先。
5. 同时接受校招与社招。

其他要求:
1. 做事认真负责,具有强烈的责任心。
2. 具有团队意识,较强的沟通能力。
3. 有敬业和钻研技术的精神。
4. 有较强的英文阅读和写作能力。

有意者请将简历以附件形式发送至 lianruiqi@ict.ac.cn,邮件主题:(姓名)应聘编译开发职位。
符合职位要求者单位会电话通知尽快安排面试。

附:计算所&&计算所机体系结构实验室简介

中国科学院计算技术研究所是中国第一个专门从事计算机科学技术综合性研究的学术机构。在这里工作或学习过的院士有二十余位,先后获得国家、院、市、部级重大科技奖励194项。曙光高性能计算机和龙芯通用处理器均在这里诞生。

计算机体系结构实验室是我国在计算机体系结构方面唯一的一个国家重点实验室。实验室主要研究方向:高端计算体系结构;微处理器与VLSI;编译和操作系统;测试与容错;非传统体系结构。

发展目标:建设一支高水平、跨学科、结构合理的研究队伍,将学术骨干培养成为所在研究领域中享有国际声誉的科学家,在国际上代表国内最高水平,建立计算机体系结构领域国际一流的科学研究、技术创新和人才培养的基地。

计算所体系结构实验室链接:http://carch.ict.ac.cn/introduction/brief/brief.html

相关文章:

]]>
http://www.lingcc.com/2012/02/01/11973/feed/ 7