看来是地址的计算方法出了问题。。。

果然是最好的结果,虽然我觉得如果仅仅是地址算错了,那真是很容易猜到的问题了。

怕就怕不是简单的地址计算错误。。。这个还是比较难滴。

既然这样,那么对于xxx架构上的xxxprofile的bug初步诊断为地址计算错误。

如此,我就义无反顾了,杀进内核去看看。

gcc ipa

gcc 里面的ipa passes 原来就是interprocedural analyse的乙烯。

Elastos 的收获

如果说能在这个操作系统或者框架上有什么收获的话,那应该是COM技术和DLL文件格式了。

好吧,也算不错的说。。。

感觉像是在上初中政治课,看到了吧,80后对洗脑是多么反感。

“例如,学校KSchool是一个语境类,学生AStudent是一个方面类,是学校的方面特征。如果一个普通类CChild对象进入了语境KSchool,就自动聚合了KSchool的特征AStudent,即具有学生AStudent的特征和行为,一旦离开KSchool,CChild对象就脱离了学校不再是学生了,也就不再具有学生的属性和行为。”

这个听上去倒是蛮好的,但是我看到的实现,却是满眼的手工cpp代码。。。。really sucks。。。

还有啊,那个二进制集成技术,听上去很yy呢,只是,这个技术该是什么样,该怎么实现?

面向部件编程,动态编程,云云云,基本上是毛概马哲。。。没办法,谁叫哥是搞技术的呢,看几个关键技术咯:

(继承),我勇敢的宣布,跟c++的继承一样,并且,没有c++的继承好用,至少实例代码是这样。

(反射),这个我要查查COM的标准咯,但是功能就是程序要保持自身的各种数据和方法类型信息,并且可以在运行时查询,好运行时查询之后呢,动态编程?好主意,CS编程应该用处多多。

(applet),基本没有看出和进程有什么太大的区别,唯一可以肯定的一点是,地址空间缩小了,这样一个进程空间可以放好几个applet。。。就这。。。

(语境和方面)(context & aspects),这个在我看来倒是有点动态继承的味道,即是一个接口对象(被叫做Interface)进入某个context之后呢,就有具有某某某aspects,这个就好灿烂了,想想擎天柱大哥在第二部尾段和天火合体的样子吧。。。吼吼。这个对context 敏感的各种编程还是蛮有用的一种pattern?咳咳。。。怎么又掉pd里面了。。。反正从概念上而言,是个好主意。实现一会再说。

(回调),知道函数指针的话,回调应该明白一半了;知道异步和中断机制的话,那就明白另一半了。

(列集与散集)(集合与解散?)看到这个marshalling,我别无选择了,只好翻开厚厚的wiki,查查MS COM的来事今生了,祝我好运,稍后送上。

发散时代

发散时代的生存准则:

把它读完。

晨读GCC

每天早晨的第一个或两个小时,用来读GCC,每天中午的第一个两个小时,用来干苦累活。。。

读代码时候的原则简单说一下:

(1)不要浮于框架,要从细处点滴积累,从一个work horse函数开始。

(2)先算法后代码,会更有效,不会一叶障目,管中窥豹。

(3)结合更多的独立思考,会更高效,异步的学习方式很自然,但是要尝试改变。

(4)提倡资料汇总,并点面结合的方法。

(5)多实验,尽管没有现成的和成熟的实验方法,但是自己写实验方案也不失好方法。

有计划,加多坚持,等于目标成功:

下面说一下计划,现在走到了优化算法这一步,但是对三层(算loop和cfg的话是五层咯)语言模式,还不是十分的了然。因此还存在一个反向巩固的过程,这会使开始阶段比较慢一些,同样,每个pass都是算法和数据结构(数据表示层)的结合,熟悉了一个算法及对应的代码以后就会对相应的实际数据结构也更加熟悉。更进一步,对别的算法比较了解以后对相应的代码读的就比较快了。

因此,计划先对某 specific pass的代码进行研读,再更有针对性的了解其他优化遍的代码。

这个启蒙代码,要力求算法清晰,资料丰富。

试试vrp pass 好了, go !

 

quotes:

 

Instead of finding the expressions which are constant, we want to determine the weighted range of values an expression can have during the execution of a program.Branches based on this variable can then be accurately predicted simply by examining this weighted value range.

 

Their approach uses the static single assignment (SSA) representation, which was originally developed as a dataflow representation geared towards propagating values through a program. It therefore provides an ideal platform for this kind of analysis. Using SSA form, constant propagation can be performed in essentially linear time.

 

In SSA form every variable has only one assignment, and therefore each use has a single definition. In essence, the def-use chains (called SSA edges) become a one-to-many rather than a many-to-many relationship. 

gcc笔记

找到各个pass的点名册。The Book:

主要就是注册一个flag,用来在命令行调用的时候来启动这个pass。

简要介绍下每个pass要注册的entries:

(1)在common.opt 中增加flag。

(2)创建一个 struct tree/gimple_opt_pass,在tree-pass.h中声明之。

(3)将其加入到init_optimization_passes中。

(4)添加一个gate函数来读取参数。

(5)在 gcc/doc/invoke.texi中增加文档。

主要看前三项就知道这个名册在哪了。

但是有一点是没有指定的,就是struct的实现,这个就要去grep一下咯。

产品设计

买了iphone,发现iphone有庞大的外设产业链。

wp 7 就要上市了,智能手机发烧爱好者们,又要累计裤带了。。。

决定花店时间研究下外设产品了,在我能力范围内,也是个不错的practice。

同时期待好的投资环境,可以把这些practice变成project,product,and money。

三屁一摸模式,就此诞生。

carry on

有段时间没写了。

自己觉得没有停下脚步,只是没上来写,或者说一直在吸收,但是还没有反刍和消化。

所以也没什么好总结的。

但是也说明没有了思考,这总不是件好事。

现在上来写了,说明我开始思考了,这显然是件好事。

我在思考的事,自己跟gcc的故事,要怎么发展呢。。。

像我这般恋爱专家,太熟悉情事之起灭,看来这般也差不多了。

如此说来,人生就是一场恋爱咯。。。神那。。。

因此此役切记为人之大忌,贪惰;唯专与勤可畅游此生。

立此存照。

 

跑题了跑题了,看来这gcc的项目是要落马了。。。

我本来想说我都习惯了。。但是我想这不是什么好习惯。

所以我还是象征性的生生气,坚定自己的立场,把编译和系统这条路走到底。

跟领导对话的时候也要表现的强硬些,这是原则,这是人生。

 

关于性能和编译,道路已经考虑的差不多了,就是放手去干的事咯。

记得时时驻足,细细思考,多写写,有时候不是想不想的事,写写可能就会自然把思路捋顺了。

scope

眼界,大概就是这么说的吧,这个取决于你的积累和涉猎,论文是其中非常重要的一部分,或者是前沿的方法和方向。同时就是工具,这就是代码的力量,或者说代码的生命,否则就眼高手低了不是;反过来说,就是你代码再熟,算法再熟,那都是死的,只有明白方向,明白未来走势,技术才有生命,工程师才有前途。

安腾论文得收获

读安腾论文,最后才发现原来体系结构不一样。。。软流水和旋转寄存器这些都是很关键得技术呢。。。

所以剩下得收获就是,模式,找到一个标杆编译器,比如说intel的商用,比较出其中的不足,再把这种普遍式的方法运用到其他体系结构中,效果应该可以肯定。