CES展可谓如火如荼。各大厂商纷纷上台。先是出了Intel的Sandy Bridge, AMD Fusion的一系列终端产品,笔记本电脑、台式机、平板。然后MS坐不住了,说windows支持ARM了。NVIDIA也没闲着,说要进军ARM处理器。b

Sandy Bridge是Intel在此次CES上的重拳。各大评测也接踵而至。什么图形计算给力,什么视频编解码牛逼等等。这篇文章,《编译点滴》就来学习一下Sandy Bridge的新特性。 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 »

 

Open64中的自动向量化通过选项-LNO:simd=(0|1|2)控制。该选项告诉编译器使用后端支持的SIMD指令来向量化循环。向量化的支持分成3个级别:

  • 级别0时编译器不进行向量化;
  • 级别1时,编译器仅在没有因使用非最佳对齐策略导致性能下降,而且不会出现浮点运算不精确的情况下做向量化;
  • 级别2时,编译器会做最激进的向量化。默认的选项是-LNO:simd=1

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 »

 

独立博客该有点什么,该写点什么,在编译点滴建站接近半年的后,忽然间有点迷茫。编译点滴该放点什么东西,博客该记录点什么,什么是该记录的,什么不该记录。虽然概括之就是自己觉得好的都能往上放。
看看现在博客里的文档,太散太杂。虽然刚刚建博的时候,很是花了一些心思写文章,找主题。但到博客的界面主题倒是换了不少,但内容实在是有点对不起观众。高达70%的跳出率说明了一切:)
幸好无意中看到了一个博客,观摩了半天后,对《编译点滴》的未来有了些想法。顺便推荐这个博客《我爱自然语言处理》。作者很用心的写了很多和自然语言处理相关的文章。博客文章很系统,自成体系。
Continue reading »

 

本博在实际工作中,经常被MIPS I,MIPS II,MIPS 32之类的名词搞混,特整理如下。

MIPS 最初是Microprocessor without Interlocked Pipeline Stages的简称,最早由MIPS公司开发的精简指令集组成,最早是32位,之后时64位。该指令集有很多版本,包括MIPS I,MIPS II ,MIPS III, MIPS IV, MIPS V ,MIPS32和MIPS64.当前主要有MIPS32和MIPS64,这两个指令集定义了一个控制寄存器和指令集。

大学里多使用MIPS结构教学,Alpha就深受MIPS 精简指令集的影响。目前的MIPS之用用在很多嵌入式系统中如Windows CE设备,路由器,网关和游戏机(PS,PSP).

MIPS结构最早由斯坦福大学的John L. Hennessy(量化研究的作者)领导设计,初衷是充分利用指令流水线。除了采用流水线,以及充分利用流水线外,MIPS还引入了寄存器窗口技术(register windows),通过这种窗口,被调用函数能申请自己的寄存器集,再利用精确的编译器计算,就能找到空闲寄存器,不必依赖硬件实现。这种方式能提升性能。

目前的MIPS 32基于MIPS II并吸收了MIPS III, MIPS IV和MIPS V的特性,MIPS64则是基于MIPS V。MIPS V主要是用来提升3D图形应用的性能。

龙芯2E/F兼容 64位MIPS III指令系统,四发射。龙芯3号则是直接MIPS 64,也就是说增加3D加速。

参考:

http://en.wikipedia.org/wiki/MIPS_architecture

http://www.tektalk.org/2009/06/24/%E9%BE%99%E8%8A%AFcpu%EF%BC%8813%EF%BC%89%E2%80%93%E9%BE%99%E8%8A%AF%E8%8E%B7mips%E6%AD%A3%E5%BC%8F%E6%8E%88%E6%9D%83/

 

反汇编器和汇编器是两个互逆的过程,后者将汇编源文件转换为机器码,前者将机器码转换成汇编语言。

汇编器通过将汇编指令符号转换为opcode和解析符号名为存储位置的形式创建目标代码,该目标代码就是机器码.其中符号解析是汇编器的关键部分.很多汇编器还提供宏支持来方便文本替换.相对于高层语言的编译器,汇编器简单很多.最早的汇编器出现在20世纪50年代,很多现代汇编其器都支持指令调度优化.Linux下使用最频繁的汇编器是gas,Gnu Assembler,因为它是GCC的默认后端,是Binutils的一部分。

反汇编器的输出通常是可读的汇编码格式,因此它时反向工程的重要工具。通常汇编语言允许常数和注释,但是在生成机器码时这些信息通常被删除,所以,在机器码上的反汇编操作只能产生无常数和注释的汇编码,所以程序员很难读懂,也很难转换为原来的高级代码。现在也有些编译器通过使用符号调试信息和交互式允许用户为特定区域的代码和值使用符号代替的方式来增强可读性。现在常见的反汇编器有:各种调试器都包含反汇编器,如GNU Binutils中的objdump就是gdb的交互式反汇编器,其他的还有PVDasm,一个支持多CPU反汇编器,OllyDbg–32位汇编级分析调试器,ILDASM–.NET Framework SDK中,用来反汇编PE文件等等

参考:

http://en.wikipedia.org/wiki/Assembly_language#Assembler

http://en.wikipedia.org/wiki/GNU_Assembler
http://en.wikipedia.org/wiki/Disassembler

 

今天特别喜欢看各个地方的日期显示,全都是2010年1月1日,心里默默的告诉自己新的一年新的开始,一年发生很多事,一年能让人有很多成长,一年也会有很多惊喜收获。09年就这样过去了,这过去的一年里,出现了很多的意外和惊喜,也有不顺和波折。好歹新的一年来了,停止感慨和抱怨,满怀信心和激情,对新到来的2010说句,你好。对于2009说句,再见,我会想你的,你已经过去。

2010,在这个年初,写下这篇日志,是为了给自己定个一年计划,希望等到一年之后能回头再来看看这些日志,到时候,就有资格总结了。

  • 第一个目标,和女友旅游一趟,不能太近,要到一个有山有水,风景迷人的地方,初定西南一带,最好是西藏,成都;新疆陕西次之。还没确定下来,得看自己能攒多少钱:)
  • 第二个目标,就是工作,在新的一年里要完成硕士论文相关工作的实践部分,发表第一篇论文,如果能争取发英文就更好了。但至少也要是中文的一类期刊。
  • 第三个目标,还是工作,希望自己能在新的一年里,按时保质保量的完成任务,这个任 Continue reading »
 

这是gcc maillist中某国际友人 laurent@guerby.net 做的2个小时报告的ppt,报告题目为GCC Toulibre 20091216。最近一直想深入了解gcc,而这个ppt基本包含本博想了解的内容,所以将其翻译并分享到这里。翻译过程中,很多地方可能有错,请大家不吝赐教。原版的ppt见文末。

  • 什么是GCC

GCC–GNU Compiler Collection,即GNU 编译器集合。GCC即可作为本地编译器也能作为交叉编译器,它支持很多高级语言和多个编译和目标平台。GCC的网址 http://gcc.gnu.org.它是FSF基金会版权所有的自由软件. Continue reading »

 

此文是Fred Chow在德拉华大学所讲open64课程讲义的翻译,转载请注明出处 http://www.lingcc.com
Fred Chow 原版讲义见最后一页

  • 软件开发指南

使用内部选项来开关每个优化–测试正常后的优化选项默认打开.尽量按照模块化原理开发,相关的模块定义尽量本地化。#ifdef Is_True_On宏来标记来断言和确认的使用。通过断言,确认程序和DevWarns协助debug。虽然包含debug信息的编译器速度慢很多,但是可以尽早的发现错误。

  • Debug辅助工具

四类:抽取某个阶段内和不同阶段间的程序代码(使用选项 -tr???);抽取某个阶段内或不同阶段间的符号表(使用选项 -ts???);分析/优化过程中方便跟踪的工具(使用选项 -tt???);提供能在调试器中调用的打印程序。

  • 存储管理

使用存储池机制(commom/util/memory.c)代替malloc/free.提供任意数量的独立操作的存储池,有类似栈的操作,pop是释放内存的唯一方式。使用基于临时特性的存储池–永久的、PU级的、阶段级的和基本块级的。 Continue reading »

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

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