【问题标题】:How Windows Portable Executables are portable across machine architectureWindows 可移植可执行文件如何跨机器架构移植
【发布时间】:2010-12-19 06:02:53
【问题描述】:

Windows 可移植可执行文件真的可以跨机器架构移植吗?如果是这样,它是如何工作的?如果不是,那么“可移植的可执行文件”是什么意思或可执行文件的哪一部分是可移植的?

谢谢,西瓦·钱德兰

【问题讨论】:

    标签: windows cpu-architecture portable-executable


    【解决方案1】:

    可执行文件本身不可移植。 PE 格式是“可移植的”,因为不同架构的可执行文件使用相同的 PE 格式,但 PE 文件中的可执行代码特定于单个处理器架构。

    实际上,这意味着许多相同的编译器和链接器代码可以重复用于不同的架构,并且用于检查可执行文件的工具可以(在某种程度上)适用于“外来”可执行文件。

    (我在这里谈论的是本机可执行文件 - .NET 程序集也使用 PE 格式并且可以真正移植。)

    【讨论】:

      【解决方案2】:

      来自维基百科: “术语“可移植”是指该格式在操作系统软件架构的众多环境中的多功能性。”

      http://en.wikipedia.org/wiki/Portable_Executable

      【讨论】:

        【解决方案3】:

        嗯,它是可移植的,因为该格式可以用于各种平台上的可执行文件(SkyOS 在切换到 ELF 之前使用它)。它在平台无关代码方面是不可移植的,或者如果您在一个操作系统上生成一个 PE 文件,它在另一个操作系统上运行。

        【讨论】:

          【解决方案4】:

          PE 文件只是二进制应用程序数据的容器。 它们允许针对不同的 CPU 架构(甚至是 .Net 等非 CPU 软件架构)。这就是为什么它们被称为“便携式”。

          它们包含的每个二进制应用程序映像都只适用于一种架构。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-09-19
            • 1970-01-01
            • 1970-01-01
            • 2013-10-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多