SSCLI下的可执行文件格式分析(1)

SSCLI下的可执行文件格式分析(Draft)

记得MSDN上某篇介绍Windows PE文件格式的超级经典权威文章开篇说道“一个操作系统的可执行文件格式在很多方面是这个系统的一面镜子。虽然学习一个可执行文件格式通常不是一个程序员的首要任务,但是你可以从这其中学到大量的知识。”最近在研究SSCLI的源代码,有些无从下手,抱着“柿子先拣软的捏”的想法,想先从.NET平台下的可执行文件入手,然后可以更进一步到Class Loader,到内存中的Object Layout,到美国人开玩笑说的JIT Happens,到Garbage Collection……
参考的东西有Google,Shared Sourced CLI Essential,Inside Microsoft.NET IL Assembler,SSCLI Source Code……
使用的工具是用来调试代码的Windbg,用来查看代码交叉链接的Source Insight,用来看二进制的UltraEdit,用来进制转换和算加减法的Windows自带计算器,用来临时记录东西的Notepad,用来字数统计和打字的Word,用来编写测试代码的Visual Studio.net 2003,用来喝水的杯子……

首先写个简单的C#程序,Hello …

more ...

研究生活总结

é›¶ä¸‰åæœˆä»½æˆ‘è¢«ä¿é€åˆ°äº†åŒæµŽå¤§å­¦ç”µå­ä¿¡æ¯ä¸Žå·¥ç¨‹å­¦é™¢è®¡ç®—æœºç§‘å­¦ä¸ŽæŠ€æœ¯ä¸“ä¸šè¯»ç ”ç©¶ç”Ÿï¼Œä»ŽåŽ»å¹´ä¹æœˆä»½ï¼Œæˆ‘å¼€å§‹äº …

more ...

六度之离,Wallop及其他

去年软院的某个MM给了我Wallop的邀请,后来我又邀请了几个朋友,加上后来勾搭上的几个wallop友,人际网络可以说已经铺开了,但是使用度却一直上不去。不光是我,我所见之处几乎遍地荒芜,除了一些横七竖八的测试贴。

据说类似Wallop这类软件统称为“社会性网络服务(SNS)”,特别喜欢猜英文简称的我估计SNS应该是Social Network Service的缩写。“人与人之间存在信任传递关系,这个所谓的信任传递层次是有限的。个体与社会的成功互动必须建立在这个信任链条上。” 这是一个曾经获得诺贝尔奖的一个Social Network模型,也是Wallop此类社群软件的理论根基。

说来挺好玩,最早接触这个社会网络模型是上个学期不久帮助某个老师在US留学的女儿做vb.net的作业,那个作业大概的意思是如果要在好莱坞的一大群演员中找到与某一个演员的关系,只需要少于或等于六步,让我们写程序测试。这东西听起来可能挺难理解(这也是为啥当时我向那位教授妈妈解释了三五遍她仍然一头雾水的原因),也是到了后来我才知道,这个小程序的背后原来还隐藏着一个社会学的理论――六度之离(Six Degree of Separation)。再插一句,从这个小题目就可以看出美国的大学在教育理科学生Coding的时候,都不忘穿插一些人文理论知识。相比之下,国内的学生在大学上C语言等课程的时候,更多的是在谭爷爷的教导下写Student->Name = “LiMing”;

六度之离又叫小世界。35年以前,美国的一位心理学家米尔格伦(Stanley Milgram)在《今日心理学 …

more ...

建立SSCLI运行和调试环境

从微软网站上(http://msdn.microsoft.com/net/sscli)下载回来的SSCLI是一个15M的压缩包。本文介绍如编译,运行,调试SSCLI和如何察看它的代码。下文所述都是笔者使用的运行环境和方法。有可能有更好的方法,欢迎交流,我的电子邮件:xxx@msn.com。

SSCLI是一个可以跨平台的实现,可以运行在Winodws,FreeBSD和Mac OS上,据说有些高手已经成功的把SSCLI跑在了Linux上。但是后面几个环境笔者不熟悉,所以Windows就成了不二之选。

安装必备的软件:

操作系统: Microsoft Windows XP

其它软件: Visual Studio.NET 2003专业版 (用来编译SSCLI,至少安装VC++.NET)

               Active Perl(Perl的引擎,用来编译SSCLI)

               Source Insight       (不错的源代码查看工具,可以方便的在代码之间进行符号跳转。用来查看SSCIL源代码)

               Windbg(微软的调试工具,用来调试SSCLI的运行情况 …
more ...

Shared Source CLI——窥探.NET底层机制的钥匙

编者按:Microsoft于2002年2月发布了Visual Studio.NET,揭开了.NET时代的序幕。几乎是与此同时,2002年3月27日,微软发布了Shared Sourced Common Language Infrastructure(共享源代码的通用语言基础设施,以下简称SSCLI)。两年过去了,国外已经有不少的大学和机构在研究SSCLI,也做出了一些比较不错的项目。但是反观国内,关于SSCLI的讨论和研究却乏善可陈。本文简单的介绍一下SSCLI的内容,希望能引起广大.NET爱好者的兴趣。

什么是SSCLI

2000年8月,微软,HP和Intel共同向国际标准化组织ECMA(欧洲计算机制造商协会)提交了通用语言基础设施(CLI)和C#编程语言的规范,希望能借此使CLI和C#成为国际标准。2001年12月13日,ECMA会员大会批准C#和通用语言基础设施(CLI)规范成为国际标准。在ECMA标准中,它们的名字是ECMA-334(C#)和ECMA-335(CLI)。SSCLI就是ECMA-334和ECMA-335的实现。SSCLI是非商业化且共享源代码的软件,它可以在FreeBSD, Mac OS X和Windows上编译运行 …

more ...

Shared Source CLI

不知什么时候起,发现自己迷上了读源代码。MFC, CRT, STL, java VM, 编译器, Linux,Linux下的WINE, Windows CE, Boost, ACE, 泄露的Windows源代码都小有研究,虽然不能完全看懂,但是偶尔从代码里面发现一丝丝的小秘密,都会让我开心兴奋不已。或许应了侯捷在《STL源码剖析》中的一句话:“源码之前,了无秘密”。

微软2002年突然发了善心,把.net的源代码开了,叫SSCLI。虽然只是一部分,虽然声称与商业版本的.net有很大的区别。但是对于有强烈的底层偷窥欲望的我,还是可以满足一下好奇心的。无奈SSCLI代码庞杂。自带的文档又雾里看花。自己一个人钻研收效甚微,去年看了一个寒假,只能算是稍微有了一些眉目,一方面是自己水平太次,一些东西看不懂,另一方面是由于缺少系统的资料,通过新闻组,网上下载ppt都是窥豹一斑,难以对SSCLI有一个全面的了解。后来打算把SSCLI作为自己毕业设计的课题。无奈已经把自己卖身给了研究生院,有些事情身不由己,结果毕业设计就成了自己都不想再提的那幅样子……

去年就从别人那里看到了有这本书,据说是研究SSCLI的不二选择。但是等了一年 …

more ...

Hello ElaME

离上次写东西已经有半个多月了。忙着期末考试。读了研一,仿佛感觉又回到了大一,期末要复习突击考试……
虽然考试结束了,但是还不能轻松的回家。本来打算这一周全都呆在嘉定,一方面跟几个学弟一起做汽车学院的项目,另一方面写写会议发言稿。谁知天有不测风云,周一居然坐在了基础软件中心的某台电脑前无所事事。

装CVS,check out code,编译平台。写HelloWorld,Run。遇到问题,动手Solve it,似乎又回到了Happy coding的日子。没什么干的,编译都有问题。没什么事做,还有时间在blog里面写无意义的东西灌水,有些犯困,早点回去。冲数码照片,早点休息。

more ...

来上海五年第一次看到下雪

今年是来上海的第五个年头了。第一次看到下雪。拿出相机拍了一张。冰雪覆盖的宁远楼……

好冷啊。或许真的是越北方人越怕冷。想念家里的暖气,想念室外天寒地冻,室内温暖如春的感觉。今天冷得什么都没干成。明天打算去嘉定了,至少还有空调。不然真的会应了那句诗“路有冻死骨”。我还没有为光荣伟大的社会主义事业作贡献呢……

more ...

瓶颈==基础知识

前几天跟同学其去了一趟电脑图书市场。打算弄几本“砖头”来啃啃。却发现自己慢慢的慢慢的落入了这样一种境地。
以前――确切的说是刚刚转入软件学院――逛计算机图书市场,总是觉得有很多书可以看,鉴于手中的Money,不得不舍鱼而取熊掌。《xx技术内幕》《深入浅出xxx》《xx编程思想》《xx本质论》《xx Primer》都是非常值得一读的图书。但是现在两年过去了,或许是浮躁了,或许真的是学到了一点东西。渐渐的,觉得编程类的图书已经不太能够吸引我的兴趣了。虽然当时因为囊中羞涩而没有买《C++ Programming Language》,但是现在已经没有兴趣再去买它了。其它的,例如《C#技术内幕》《ADO.net Internal》等等,已经都不太有兴趣去看了。理由呢,其一:.net的原理已经摸了个大概,ado.net的数据访问模式也基本了解了,真的要用的时候,可以快速的查找资料而获得答案。或许同学跟我也有一样的感触。有个同学说“《深入浅出MFC》这种书是给比较初级的程序员看的……”
那么除了编程类书籍。还能看些什么呢 …

more ...

软件领域的学习路线

今天,虽然是平安夜。但是周围没有一点节日的气氛。一个下午在软件学院看新来的开发板,晚上老师们去酒店聚餐了,却让我留在这离上海三十公里的地方坚守岗位,整个校区都空荡荡的,好冷……
晚上,有个上进的小弟弟给我发邮件,反正也没事,就长篇大论一下了,骗完了人还把邮件贴到这里,在起一个吓人的名字,当一篇blog…

ASK:

我开门见山了

我一直想本科阶段学mfc ATL STL C# 再看Java VB ASP就行了

但今天看来想法天真

我想这远远不够,远远不够完整

我想使我的学习的体系能够足够的大足够的深,至少是在本科阶段是这样的

不然就算考上研究生也没后劲,到时候死都不知道是怎么死的,死无葬身之地

然而我不想死,想活着,好好的活着,更想让别人看着我而寻死,哈哈

我需要一个构架,完整一点的,够大沟深(有点像棺材),

到时候就算自己活不成,也能有个棺材,比死无葬身之地要好!

不怕你笑话,这里的老师水平有限(我找了8个),没人能给我一个完整一点的知识框架

谈到编程方面,我告诉他我的计划 …

more ...