WoW64可以在64位Windows上运行32位应用程序。如果可以在运行时将32位指令转换为64位指令,为什么我们不能将可执行文件本身转换为64位?
答案 0 :(得分:2)
这是因为WoW64没有将32位指令转换为64位。
通过将CPU切换到兼容模式,您的32位可执行文件以32位模式运行。对API /驱动程序调用进行了一些内联转换,但大多数代码都没有转换。
*仅适用于x86-64架构。 IA-64架构并不支持这一点,因此WoW实际上将您的代码转换为64位,但性能明显下降。
*。编译为MSIL的.NET代码被JIT打造到正确的架构。使用像Java这样的中间语言的其他架构可能会发生同样的情况,但我不是那里的专家。
答案 1 :(得分:0)
是的,Wow64允许您运行32位程序,但它们仍然以32位模式运行 - 不执行任何代码更改。对于本机应用程序来说,这种自动翻译是不可能的。
首要问题是本机应用程序没有注释来解释代码的作用。仅举一个例子:编译器编译指针操作代码并使用32位寄存器在32位平台上保存此指针值并为此发出裸机器代码 - 运行时将不知道这是一个指针,它需要在64位平台上放置64位寄存器。
Java和.NET等托管环境可以处理它 - 编译器发出带有必要注释的“中间语言”代码,然后在首次运行代码之前为目标平台编译。