"任何CPU"是如何实现的?

ble*_*lez 2 .net winapi assemblies reverse-engineering

"任何CPU"如何在低级别实施?

是不是有两种格式:PE32和PE64?Windows x86和x64都可以运行32位.但是,它不是通过在32位内部使用64位可执行文件并在内存中运行它来实现的,因为这个过程将具有与启动器不同的ID.那他们是怎么做到的?

小智 7

在他反对任何CPU的论点中,Rick Byers还包括一些与此问题相关的背景信息:

由于我们希望人们能够编写可以从32位和64位进程重用的.NET库,因此我们使用Windows来扩展OS加载程序支持以启用体系结构中立("AnyCPU")PE文件.

请查看上面的链接以获取更多详细信息.

  • @blez:您可能知道,托管代码是在运行时编译的JIT.在"任何CPU"目标的情况下,.NET JIT编译器可以选择生成32位或64位特定字节码.另一方面,非托管代码在编译时直接编译为平台特定字节代码.因此,非托管二进制文件直接绑定到平台,无法针对通用"任何CPU"平台进行编译. (2认同)