2008-09-30 8 views
19

Я эксперт по программированию C# 3/.NET 3.5, который хочет начать выполнение некоторого исполняемого кода, используя System.Reflection.Emit.DynamicMethod. Мне бы хотелось перейти на следующий уровень, познакомившись с IL.Каковы наилучшие ресурсы для обучения CIL (MSIL)

Любые указатели (каламбур)?

ответ

5

Лучший способ узнать это - написать что-то, что вы понимаете, а затем посмотреть на созданный им ИЛ. Кроме того, в зависимости от того, что вы делаете, вы можете использовать деревья выражений вместо испускания IL, а затем, когда вы скомпилируете деревья выражений, эти умные ребята из microsoft создают IL для ya.

+0

Деревья выражений FTW! Не думал об этом! Благодаря! – TheSoftwareJedi 2008-09-30 23:05:48

5

.NET Reflector отлично подходит для изучения ИЛ, созданного C#/VB.NET.

Это замечательный инструмент для обучения.

+0

Я использую это все время, но им нужно декомпилировать C# - отличный совет, спасибо! – TheSoftwareJedi 2008-09-30 23:02:07

5

ECMA 335 спецификация свободно доступна для скачивания здесь: http://www.ecma-international.org/publications/standards/Ecma-335.htm

раздела III является наиболее актуальным для борьбы с MSIL, но я настоятельно рекомендую раздел I, а также для любого разработчика .NET, как это будет значительно упрощают понимание платформы.

+0

Я хотел упомянуть, что в последние несколько недель я тоже хотел углубиться в чаши .Net и узнать о коде CIL. Лучший документ, который я могу найти, - это спецификация. К сожалению, мне еще предстоит найти прочный сайт «Teach yourself CIL», в котором достаточно информации, чтобы быть опытным в MSIL. Если вам нужна жесткая документация, спецификация кажется лучшим местом для перехода. – RLH 2015-03-13 11:24:54

6

В дополнение к ответу Даррена я предлагаю выбрать или изобретать игрушечный язык и написать для него простой компилятор. Выберите что-то, что требует небольшого разбора, например BF или языка на основе стека, и вы обнаружите, что писать компилятор на самом деле проще, чем кажется.

Смежные вопросы