Связь между компиляцией в x86 / x64 и MSIL - PullRequest
0 голосов
/ 25 января 2019

Так что я знаю, что если вы скомпилируете для любого процессора, вы получите вывод MSIL.Если вы компилируете как x86, вы получите вывод x86.

Мое понимание этого процесса выглядит следующим образом

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

Мой вопрос: если вы компилируете в x86 / x64, пропускает ли этоMSIL -> JIT compiled in CLR шаг выше?Или мое понимание выключено?

1 Ответ

0 голосов
/ 03 февраля 2019

Ваше понимание не совсем верно.Если сборка состоит только из управляемого кода, всегда будет скомпилирован в чистый MSIL, независимо от настроек компилятора (AnyCPU / x86 / x64), поэтому даже если вы компилируете как x86, вы все равно получите MSIL.

Если вы компилируете как AnyCPU, то ваша сборка может выполняться как или загружаться в 32-битный или 64-битный процесс, тогда как если она компилируется как x86, она может запускаться только (или загружаться в) как 32-битный процесс.немного процесса.Точно так же, когда он скомпилирован как x64, он может работать только (или загружаться) как 64-битный процесс.В обоих случаях используется один и тот же MSIL, и JIT компилирует MSIL в требуемый 32/64-битный собственный код.

...