abxialiang
2016-01-07 10:29:05 +08:00
假设汇编是最底层语言,拿 c 和 c#来对比,你的意思是实现同样的功能,c 和 c#应该可以编译出同样的汇编代码,那样运行性能就一样了是吧,实际上很困难,因为机器和人脑的运行方式有很大的区别,高级的语言更接近人脑的思维方式,但付出的代价是用了很多额外的逻辑来将机器尽量模拟成人脑,语言越高级,这种额外的逻辑就越多,而这些额外的逻辑最终"编译"进了汇编代码,为什么编译器不能在在编译时把这些"额外的逻辑"去掉只保留核心汇编代码呢?简单的也许可以,像代码 1+2+...n,有些编译器直接转化为数学公式(1+n)*n/2 进行计算了,复杂点的无法那么智能的去掉了,往往一个项目中复杂的东西比较多.编译器就是个翻译器,在翻译成汇编时如果太"智能",自以为是的抽取核心思想,指不定把不该去掉的东西去掉了,还是直译稳妥,毕竟人脑的思想还太过深邃.
~~这些是我个人的一些想法,说的不恰当的地方请多包涵.