二进制翻译(binary translation)是一种直接翻译可执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行.它使得不同处理器之间的二进制程序可以很容易地相互移植,扩大了硬件/软件的适用范围,有助于打破前面提到的处理器和支持软件之间互相掣肘影响创新的局面.
  基于软件的二进制翻译,可以分为三类:解释执行,静态翻译,动态翻译。
  解释执行对源处理器代码中的每条指令实时解释执行,系统不保存也不缓存解释过的指令,不需要用户干涉,也不进行任何优化.解释器相对容易开发,比较容易与老的体系结构高度兼容,但代码执行效率很差。
  静态翻译是在源处理器代码执行之前对其进行翻译,将源机器上的二进制可执行程序文件a完全翻译成目标机器上的二进制可执行程序文件b,然后在目标机上执行程序b.一次翻译的结果可以多次使用.静态翻译器离线翻译程序,有足够的时间进行更完整细致的优化,代码执行效率较高.然而,静态翻译器可能无法完整地翻译一个程序,因而需要依赖解释器的支持;而且静态翻译器需要终端用户的参与,这给用户使用造成了很大不便。
  动态翻译则在程序运行时对执行到的片断进行翻译,克服了静态翻译的一些缺点--如由于不能知道控制流中某点的寄存器或内存的值,因此不能实现代码挖掘;动态翻译还可以解决大部分实际情况中的自修改代码问题,而这在静态翻译是不可能的[14];动态翻译可以利用执行时的动态信息来发掘静态编译器所不能发现的优化机会;动态翻译器对用户可以做到完全透明,无需用户干预。

posted on 2010-01-05 00:52  康的瑞  阅读(1408)  评论(0编辑  收藏  举报