在在x86 / x64和MSIL编译的关系

问题描述 投票:1回答:1

所以,我知道,如果你编译所有的CPU,你会得到一个MSIL输出。如果编译为X86,你会得到一个x86输出。

我的认识过程是类似如下

.NET Code -> Compiler -> MSIL -> JIT compiled in CLR -> Native Instruction

我的问题是,如果你在x86 / x64编译,是否跳过上述MSIL -> JIT compiled in CLR一步?或者是我理解了吗?

compilation x86 64bit jit cil
1个回答
2
投票

你的理解是不完全正确的。提供组装只包含托管代码,它总是会被编译为纯MSIL,无论编译器设置(AnyCPU / 86/64)的,所以即使你编译为X86,你仍然可以获得MSIL。

如果编译为AnyCPU,那么你的组件可为运行或装入一个32位或64位的过程,而如果它编译为X86,它只能作为运行(或装入)一个32位进程。类似地,当作为64位编译,它只能作为运行(或装入)一个64位的过程。相同MSIL在任一情况下使用,并且JIT编译MSIL到所需的32/64位本地代码。

© www.soinside.com 2019 - 2024. All rights reserved.