vc7的编译器cl.exe只有84k,让人难以置信,即使那些大师级程序员们的水平再高,如此复杂的编译器也不可能被压缩到这么大点儿,我用strings看了一下里面的字符串,也没有调用几个函数,分明是一个普通的小程序,这增加了我的疑虑,东翻西看,还真找到了原因。

原来vc7的主要实现都放在了几个dll文件里,cl.exe只是简单的提供一个胶合罢了。bin文件夹下有三个dll文件,c1.dll是C编译器前端,大致有912k,c1xx.dll是C++编译器的前端,2.1M大小,而另外还有一个c2.dll的文件,实现了编译器的后端,有1.78M,前两个估计负责词法语法的分析和中间代码的生成,而后端的c2就是代码的优化和机器代码的输出了。从vc7的头文件里可以看出来它还支持其他的一些cpu,如此只需简单的在后端代码生成部分换一个实现就行了,呵呵,整体结构挺清晰~~~

把C程序写好不容易,C++用习惯之后再来看C,感触颇多,oop并不是C++的特权,重要的是,清晰的结构和设计,c同样可以实现oop,程序的思想存在于programmer的心中。优美的程序是在历尽风霜,对programming的概念和本质深刻认识和理解之后的人的手里写出来的。

路漫漫其修远兮,吾将上下而求索……


发表评论

邮箱地址不会被公开。 必填项已用*标注