Каковы наилучшие ресурсы для изучения CIL (MSIL)
-
03-07-2019 - |
Вопрос
Я опытный программист на C # 3 / .NET 3.5, который хочет начать создавать некоторый runtime codegen, используя System.Reflection.Emit.DynamicMethod.Я бы с удовольствием перешел на следующий уровень, поближе познакомившись с IL.
Есть какие-нибудь указания (каламбур)?
Решение
Лучший способ научиться этому - написать что-то, что вы понимаете, а затем посмотреть на созданный файл.Кроме того, в зависимости от того, что вы делаете, вы можете использовать деревья выражений вместо того, чтобы испускать IL, а затем, когда вы компилируете деревья выражений, эти умные ребята из Microsoft создают IL для вас.
Другие советы
В дополнение к ответу Даррена я бы предложил выбрать или изобрести игрушечный язык и написать для него простой компилятор.Выберите что-нибудь, что не требует большого синтаксического анализа, например BF или язык на основе стека, и вы обнаружите, что написать компилятор на самом деле проще, чем кажется.
.NET Отражатель отлично подходит для изучения IL, созданного C # / VB.NET.
Это замечательный инструмент обучения.
Спецификация ECMA 335 находится в свободном доступе для скачивания здесь:http://www.ecma-international.org/publications/standards/Ecma-335.htm
Раздел III является наиболее подходящим для работы с MSIL, но я бы настоятельно рекомендовал раздел I также любому разработчику .NET, поскольку он значительно укрепит понимание платформы.
Опытный ассемблер .NET 2.0 IL. Хотя сейчас эта книга, возможно, немного устарела, для меня это все равно был отличный обзор.