1

有时在软件公司中,客户提供多种格式的数据。有可链接和可执行的数据被称为“重新托管”,编译的目标文件被称为“重新定位”。我试图了解重新托管和重新定位在该领域的含义。它类似于计算机科学中的 Bootstrap 理论吗?我对以下过程的理解(如果不正确):

问题:

I need to write a compiler for a new language called "MyLang" to run on PowerPC

解决方案:

1. I need to write a compiler for a language "MyLang-Mini"; a subset of "MyLang" to run on PowerPC. 


2. I need to write a compiler for "MyLang" using "MyLang-Mini" to run on PowerPC.

3. I run the compiler obtained from no. 1 through the compiler obtained from no. 2 to  
   obtain the compiler for MyLang to run on PowerPC.

在定制的“T”图中(...ISH):

MyLang      PowerPC                                MyLang              PowerPC
      MyLangMini      MyLangMini           PowerPC       PowerPC(instr.) 
                             PowerPC(instr.)

我感到困惑的是重新托管和重新定位。他们是如何与这个概念联系起来的?如果我有一些二进制数据,例如 .exe 或 .obj,我在重新托管和重新定位什么?如果可能的话,我会很感激一些详细的解释!

我知道这将进入“交叉编译器”,但更希望专家意见可以确定。

提前致谢。

4

1 回答 1

1

我现在知道在软件工程中:

重新托管 - 如果您有需要在您的主机上使用的第三方应用程序可链接/可执行文件,您可以重新托管。在这种情况下,目标通常是相同的(操作系统平台、处理器等)。在最坏的情况下,需要虚拟化。重新托管的应用程序将像运行在主机中的应用程序之一一样运行

重新定位 - 如果您有第三方源代码,您可能需要重新编译它以匹配您的目标环境。也可能是您拥有第三方 .o 或 .obj 编译模型,并且您希望将它们与您的源代码链接(重新定位)以便将其托管在主机上。就像 REHOSTED 应用程序一样,它就像应用程序安装在主机上一样。

很高兴知道这与编译器重新托管和重新定位有何相似之处。对不起,我是这个领域的新手,即使是一记耳光也会感激不尽。

于 2013-06-21T06:36:32.587 回答