发布网友 发布时间:2024-09-30 10:08
共1个回答
热心网友 时间:2024-10-25 11:49
一种新处理器的流行,离不开相应软件的支持。开发新的处理器可能会因为失去相应软件的支持而影响其推广应用和市场前景;另一方面,得不到广泛应用和一定市场份额的处理器也很难得到丰富的软件支持。这种处理器和支持软件之间相互钳制的关系,既使得新处理器的设计不得不考虑兼容老处理器,也阻碍了新处理器的推出。在这种情况下,研究如何把支持老处理器的软件移植到新的处理器上,使新的处理器从诞生之初就有丰富的软件,不仅对软件重用有重大意义,更可以开阔处理器研发的思路,促进新处理器的创新。
移植方法
一般有三种方法可以把老处理器上的代码移植到新处理器上:
1. 在新处理器上提供专门的运行模式来执行老代码,如英特尔的安腾(Itanium)处理器专门设计了执行x86代码的硬件。
2. 把源程序重新编译到新的指令集。
3. 使用软件方法,解释或翻译应用程序。
各方法优缺点
第一种方法,显然无法利用新处理器的一些先进特性,失去了开发新处理器的意义,并且增加了新处理器的硬件复杂度,甚至还会影响原有代码的执行效率。
第二种方法可以达到很好的效率,但并不总是可行,因为有些程序已经没有源代码,有些程序依赖于共享代码库,而这些共享代码以目标代码形式出现,不一定能得到源码,有些源程序语言没有编译到新指令集的编译器,此外操作系统的差异还可能使得只有修改源代码才能重新编译这些例程(比如与图形相关的代码)。
因此第三种方法,称之为二进制翻译(Binary Translation)应运而生。它是一种直接翻译可执行二进制程序的技术,能够把一种处理器上的二进制程序翻译到另外一种处理器上执行。它使得不同处理器之间的二进制程序可以很容易地相互移植,扩大了硬件/软件的适用范围,有助于打破前面提到的处理器和支持软件之间互相掣肘影响创新的局面。
关于二进制翻译
二进制翻译也是一种编译技术,它与传统编译的差别在于其编译处理对象不同。传统编译处理的对象是某一种高级语言,经过编译处理生成某种机器的目标代码;而二进制翻译处理的对象是某种机器的二进制代码,该二进制代码是经过传统编译生成的,经过二进制翻译处理后生成另一种机器的二进制代码。按照传统编译程序前端、中端和后端的划分,我们可以理解为二进制翻译是拥有特殊前端的编译器。