【发布时间】:2010-12-19 06:02:53
【问题描述】:
Windows 可移植可执行文件真的可以跨机器架构移植吗?如果是这样,它是如何工作的?如果不是,那么“可移植的可执行文件”是什么意思或可执行文件的哪一部分是可移植的?
谢谢,西瓦·钱德兰
【问题讨论】:
标签: windows cpu-architecture portable-executable
Windows 可移植可执行文件真的可以跨机器架构移植吗?如果是这样,它是如何工作的?如果不是,那么“可移植的可执行文件”是什么意思或可执行文件的哪一部分是可移植的?
谢谢,西瓦·钱德兰
【问题讨论】:
标签: windows cpu-architecture portable-executable
可执行文件本身不可移植。 PE 格式是“可移植的”,因为不同架构的可执行文件使用相同的 PE 格式,但 PE 文件中的可执行代码特定于单个处理器架构。
实际上,这意味着许多相同的编译器和链接器代码可以重复用于不同的架构,并且用于检查可执行文件的工具可以(在某种程度上)适用于“外来”可执行文件。
(我在这里谈论的是本机可执行文件 - .NET 程序集也使用 PE 格式并且可以真正移植。)
【讨论】:
来自维基百科: “术语“可移植”是指该格式在操作系统软件架构的众多环境中的多功能性。”
【讨论】:
嗯,它是可移植的,因为该格式可以用于各种平台上的可执行文件(SkyOS 在切换到 ELF 之前使用它)。它在平台无关代码方面是不可移植的,或者如果您在一个操作系统上生成一个 PE 文件,它在另一个操作系统上运行。
【讨论】:
PE 文件只是二进制应用程序数据的容器。 它们允许针对不同的 CPU 架构(甚至是 .Net 等非 CPU 软件架构)。这就是为什么它们被称为“便携式”。
它们包含的每个二进制应用程序映像都只适用于一种架构。
【讨论】: