Каковы лучшие ресурсы для изучения CIL (MSIL) - PullRequest
19 голосов
/ 01 октября 2008

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

Какие-нибудь указатели (каламбур предназначен)?

Ответы [ 5 ]

6 голосов
/ 01 октября 2008

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

5 голосов
/ 01 октября 2008

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

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

5 голосов
/ 01 октября 2008

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

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

5 голосов
/ 01 октября 2008

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

3 голосов
/ 01 октября 2008

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

...