回复 31# StarWing83 的帖子
不错,编译原理是用来处理形式语言的理论。我不知你们老师怎么上的课,但我相信大部分学校是以讲解语法分析为主要内容的,自顶向下、自底向上是其两大方法。当然,肯定还有新技术在哪个实验室呆着。语法分析也没有什么神秘的东东,也就是根据文法来判定输入的句子是否符合该文法,为下一步的语义分析打基础。其关键核心就是分析表。如果手工完成这些东西,费时费力。如果用Yacc就不存在这个问题。词法分析也是一样。接下来就是语义分析、中间代码生成及优化、目标代码的生成及优化。往往最后的目标代码的优化才是最重要的,看看Intel的编译器的介绍就知道了。这是我从课本上知道的,当然编译器的制造技术每个公司都有其自身的保密技术。
我的印象中,在VC6.0中编写具有多态性的C++程序,反汇编后的那个代码在维护多态性的函数调用表的表头有一段多余动作的代码。即保存了一个出栈的地址,又压入了一个地址,但这两个地址是一样的,不是巧合的一样,是理论上的一样。这就是没有优化好的结果。至于什么多线程的优化,向量优化我没弄明白就不发表这方面的言论。具体可以参考Intel编译器的官方介绍。
另外我不认为嵌入式的教材能够让人理解PC的CPU,因为他们的指令集都不一样。至于架构是不是一样,我没研究过没有发言权。
另外,中国有多少人参与过CPU的设计开发我不知道,但我知道随便一本国内的《计算机组成原理》书都讲CPU的结构体系(一般为X8086或8088),这是不是对读者的不负责任?我看过一篇报道,国外的某个大学为了验证爱因斯坦的某个理论,耗资四亿美元发射一个装置到太空去验证。如果是中国,那么我相信这个理论是会作为定理来用的。
我不想说什么CPU,也不想说什么内功和外功。我只是想说的是:知识不分贵贱,用得到的就是宝,用不到的就是废品!工具就是拿来用的,是为人服务的,有车不坐你走路那是你自己的选择。是不是走路走多了就能飞起来,那得看你有没有轻功秘籍了。