Можно ли кодировать в MSIL?

Мне просто любопытно узнать, можно это сделать или нет. Я не планирую делать это, если он не принесет значительных преимуществ в производительности. Я веб-разработчик и разработчик игр, но обычно я не разрабатываю игры на C #.


person user161433    schedule 08.09.2009    source источник


Ответы (4)


Да, это возможно - вы можете использовать ilasm (поставляется с .NET SDK) для компиляции вашего кода. Однако в Visual Studio для этого нет поддержки IDE. Нет никаких преимуществ в производительности, которые вы могли бы извлечь из этого, которые вы не смогли бы получить другими способами - в частности, C ++ / CLI охватывает все низкоуровневые функции CLR, которые могут дать некоторые преимущества и недоступны из C # или VB. - в первую очередь, распаковка без копирования (ref), простые неограниченные указатели на функции (в отличие от делегатов) и связанные инструкции calli IL и ref (управляемый указатель на языке CLI) локальные переменные (в отличие от просто параметров).

person Pavel Minaev    schedule 08.09.2009

Да, ты можешь; Microsoft MSIL Assembler (ilasm.exe) из .NET SDK скомпилирует ваш IL в исполняемый код. Я не вижу причин для этого, за исключением очень конкретных областей, где вы обнаружили существенное улучшение производительности.

Вот подробная, если датирована, статья с описанием как это сделать.

person Michael Petrotta    schedule 08.09.2009

Или вы можете выпустить немного CIL из вашего C #. Передача литерала объекта в ILGenerator

person Steven Sudit    schedule 09.09.2009

В IDE #Develop (Sharp Develop) есть плагин для проектов il. Я не использовал его, поэтому не уверен, насколько он полезен. http://www.icsharpcode.net/OpenSource/SD/

person Jason Haley    schedule 16.10.2009