Каковы лучшие ресурсы для изучения CIL (MSIL)

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

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

5 ответов

Решение

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

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

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

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

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

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

Эксперт.NET 2.0 IL Ассемблер. Хотя эта книга, возможно, немного устарела, она все же была для меня отличным обзором.

Другие вопросы по тегам