Процесс компиляции
От: sebastien  
Дата: 17.08.09 10:40
Оценка:
Во многих источниках процесс компиляции программы, скажем, на C# описывается так: C# -> CIL -> native code (JIT-компилятором). Стал интересоваться глубже, с удивлением узнал, что есть ещё одна стадия: C# -> CIL -> bytecode -> native code. Насколько я понимаю, JIT-компилятор выполняет только генерацию bytecode -> native code, всё остальное происходит при начальной компиляции. Тогда я абсолютно не понимаю, где в этом процессе толком участвует CIL. То есть зачем он нужен как промежуточное звено, и сохраняется ли на диск на какой-то стадии программа на нём?
Re: Процесс компиляции
От: Poul_Ko Казахстан  
Дата: 17.08.09 10:49
Оценка: 2 (1) +1
Здравствуйте, sebastien, Вы писали:

S>Во многих источниках процесс компиляции программы, скажем, на C# описывается так: C# -> CIL -> native code (JIT-компилятором). Стал интересоваться глубже, с удивлением узнал, что есть ещё одна стадия: C# -> CIL -> bytecode -> native code. Насколько я понимаю, JIT-компилятор выполняет только генерацию bytecode -> native code, всё остальное происходит при начальной компиляции. Тогда я абсолютно не понимаю, где в этом процессе толком участвует CIL. То есть зачем он нужен как промежуточное звено, и сохраняется ли на диск на какой-то стадии программа на нём?


Могу ошибаться, но по-моему можно провести аналогии между понятиями CIL и ассеблер, а так же bytecode и машинный код.

Т.е. CIL и bytecode это одно и то же, только представленное по-разному — в виде кода и в виде потока байт.
Brainbench transcript #6370594
Re[2]: Процесс компиляции
От: sebastien  
Дата: 17.08.09 11:11
Оценка:
Здравствуйте, Poul_Ko, Вы писали:

P_K>Могу ошибаться, но по-моему можно провести аналогии между понятиями CIL и ассеблер, а так же bytecode и машинный код.


P_K>Т.е. CIL и bytecode это одно и то же, только представленное по-разному — в виде кода и в виде потока байт.


То есть программа в CIL на диск всё-таки не сохраняется, так же как и ассемблерные версии программ, к примеру, на С? В таком случае можно ли как-то просмотреть именно CIL-овскую версию сборки (ну или хотя бы скомпилированного класса / метода / чего-то ещё)?
Re[3]: Процесс компиляции
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.08.09 12:02
Оценка: 2 (1)
Здравствуйте, sebastien, Вы писали:
S>То есть программа в CIL на диск всё-таки не сохраняется, так же как и ассемблерные версии программ, к примеру, на С? В таком случае можно ли как-то просмотреть именно CIL-овскую версию сборки (ну или хотя бы скомпилированного класса / метода / чего-то ещё)?
Можно, при помощи обратного процесса. Ключевые слова: ildasm, Reflector.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.