vaibhav1800 Ответов: 2

Почему преобразование промежуточного языка


We know in Dot Net Framework , Compiler compiles the managed Code to Intermediate Code and then to machine code.
 
Now my Question why Compiler straighforward compiles from Manage code to Machine Code. Why It has to first convert to Intermediate Language ? 


Что я уже пробовал:

Tried Googling but didnt find anything specific

0x01AA

Как не эксперт по этому вопросу я вижу по крайней мере две вещи:
1.) увеличьте шансы стать более независимым от платформы
2.) компиляция CIL "на лету" (Common Intermediate Language) имеет очень большое преимущество, что она может быть оптимизирована на текущем используемом процессоре/архитектуре

2 Ответов

Рейтинг:
8

Richard Deeming

Кил - почему .Чистый код компилируется в MSIL? - переполнение стека[^]

Прежде всего потому, что MSIL является агностиком платформы. Если бы вы скомпилировали прямо в машинный код, вам пришлось бы перекомпилировать его для каждой платформы, которую вы хотите поддерживать.


Рейтинг:
20

F-ES Sitecore

Есть два преимущества. Компилятор может конвертировать разные языки в один и тот же CIL, так что несколько языков могут использовать фреймворк, c# и vb.net быть самым известным. Но любой, кто хочет создать язык .net, должен знать только, как создать CIL.

Второе преимущество заключается в том, что для запуска .net на платформе этой платформе требуется только возможность конвертировать CIL в свою собственную конкретную платформу. Поэтому я могу составить мое C# приложение для КСС, КСС, то любой среды включены может работать, так что Windows с помощью .Framework или Linux с помощью Mono, или еще что-нибудь, что понимает КСС. Если бы вы сразу перешли от c# к машинному коду, то вам пришлось бы компилировать свою программу для определенной платформы. С помощью CIL вы компилируете в CIL, а затем целевая платформа беспокоится о преобразовании в машинный код.