主题:【讨论】解释执行类代码的性能有无可能达到甚至超过本机编译代码 -- 老兵帅客
共:💬64
一。目前标准的C/C++程序编译以后所得到的可执行文件只是一个二进制执行映像,而不存在媒体信息,因此是不可能自行改动代码运行顺序或者优化的。但是记忆中确实存在过解释型的C/C++环境(它有提示符OK,从图片上来看很像是古典的Basica),因此应该有对应的中间码表示和中间码到机器码的转换。
至于机器代码自修改,主要是通过汇编码来实现,除了病毒这类变态应用以外,主要是用在极度节省内存的环境中。
二。对于JVM/CLR这类现代VM来说,中间码到机器码的转换过程的确存在一个学习时期,而且这个时期的确可以提高转换质量,从而提高VM的运行效率,甚至在局部做到理论上的最优化,从而超过静态编译优化器所能够做到的程度,但是在全局范围内的最优化将需要很长的运行时间,这样这项技术的适用范围将受到限制。
- 相关回复 上下关系8
压缩 8 层
调试器用的和动态分析/优化用的Meta Data是不一样的 老兵帅客 字294 2004-07-23 21:01:57
关键在于这种程序流的信息是否只有VM机才能提供 梦里依稀 字173 2004-07-23 21:09:46
不知道是不是可以这样说:C/C++编译好的程序就是CPU执行的具体指令了。 Highway 字600 2004-07-23 21:25:01
回复
二进制代码不能变化似乎也不是绝对的吧 梦里依稀 字198 2004-07-23 21:34:59