Каковы лучшие ресурсы для изучения 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 Ассемблер. Хотя эта книга, возможно, немного устарела, она все же была для меня отличным обзором.