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 ...

闲话:从Blog搬家到EAI

近来,提供blog服务的网站越来越多,从国际的MSN space,google,wallop到过内的CSDN,TOM等等,让人目不暇接,似乎Blog已经成了继电子邮箱之后的又一个赚钱的利器。引得无数大小网站竟折腰,还有些网站不但提供日志功能,而且还增加了图片上传,音乐上传等等好多功能。blog的盛行仿佛又重现了本世纪初的免费邮箱和免费个人主页。

可以做的选择多了,有些人(偶是典型)不免心痒手痒。就像当年的免费email,几乎稍微是个知名的免费邮箱,偶都有一个,当然用不用就是另当别论。但是blog跟电子邮箱有一个最大的区别。邮件是以封为单位的,如果不是什么大不了的邮件,看完了就可以顺手delete,所以一个人拥有十个八个的email很正常。但是blog就不一样了。blog这个东西强调积累,每一封日志都记录作者某个时候的想法,心情,观点……一篇Blog的意义不大,即使再精彩,也顶多算BBS里面的一“好贴”。如果把一个时间段例如几个月,甚至几年的日志连续起来,就可以看到一个人的心情,生活的轨迹。写blog跟体育锻炼差不多,积累才有意义。

好,问题就来了。可以落脚选择的blog多了,不免会有朝秦暮楚找三幕四的想法。像偶自己,最初把家安在了现在的blogcn,图的是它海纳百川的气度,还有可以摆开CSDN上程序员之间相互的无理取闹 …

more ...

'不得不说,关于提问…'

做CPP的TA已经有几个月了,有些事情憋着不爽,这几天又被论文折腾,一起说。

03的同学勤学好问我深刻理解,也感到由衷的高兴,但是还是有些问题应该讲明。

  1. 问问题之前自己思考过没有,有没有查过资料

刚刚当TA的时候,听大家抱怨不会用MSDN,不会用开发工具。偶想也是,没人教过,你们又刚从高中出来,被“填鸭”惯了。就给你们讲了一次MSDN跟开发工具的使用。想这下应该没问题了,学期快结束了。看看BBS里面文的问题,还有诸如此类:

如何把string转成int
如何访问string中的第n个字符
如何清空set
C2061: 语法错误

这些问题,只要自己查查msdn,或者google,或者问问周围同学,几秒钟之内肯定能出答案的,如果这点自学能力都没有,对不起,恕我直说,你不适合干这行。

还有些编程编出问题了,直接把代码贴上去,然后喊一声“救命”… … 就等别人来救。错误描述什么的丝毫不题。

更有甚者,救命喊完之后,几分钟自己顶一次,然后喊:
紧急求救……
呼叫TA
期待牛人解答 …

more ...

致C入门者的话

作为高年级的学生,很高兴与大家相聚在同济大学软件学院。C语言是我们软件学院的第一门专业基础课。一个刚刚接触程序设计的人,肯定会有各种各样的疑惑。近来,有很多大一的同学问我如何学好C语言,在这里我结合自己的学习经历谈谈个人的一些看法,希望大家能够从中受到启发,这是我最大的心愿!也欢迎大家与我多交流沟通。

一、勿在浮沙筑高台
任何一门课程,基础都是很重要的。如果基础不牢,其他都无从谈起。具体到C语言,既然是一门语言,就像汉语,英语一样,都有自己的语法规则。汉语英语说话语法不对,别人有可能也能明白我们的意思,但是计算机只会严格按照我们的指令去做。所以,C语言语法这部分虽然不难,但一定要牢记!做到得心应手。+=*/运算符,for、while循环,if、switch选择,宏,malloc、free内存分配和释放,指针和数组的存取……这些都是最基本的东西。只有熟练掌握了这些,我们才可以与计算机畅通无阻的交流。
对于这部分内容,没有什么好的方法,建议大家多看书,多上机,多练习。我学习的第一门编程语言是VB。VB的语法与C语言相比相对简单,但是我依然还记得那个时候连循环语句都不会写就去写游戏,然后碰的焦头烂额的日子 …

more ...